Методическое пособие по курсу Информатика. Python

для студентов второго курса геогафического отделения ИЭ и ур

 

 

Муртузалиева А.А.

ФИиИТ | ДГУ

 


 

Содержание

Лабораторная работа 1 Введение в язык программирования Python

Лабораторная работа 2 Математические операции в Python

Лабораторная работа 3 Структура ветвление в Python

Лабораторная работа 4 Работа с циклами в Python

Лабораторная работа 5 Работа со строками в Python

Лабораторная работа 7 Функции в Python

Лабораторная работа 8. Работа с двумерными массивами (вложенные списки).

Встроенные функции

Ключевые слова

Глоссарий

Литература

python™

Лабораторная работа 1 Введение в язык программирования Python

Цель работы: Познакомиться со средой разработки Python. Изучить основные типы данных, команды ввода и вывода данных.

 

Краткая теория

Python– это объектно-ориентированный, интерпретируемый, переносимый язык высокого уровня. Программирование на Python позволяет получать быстро и качественно необходимые программные модули.

В комплекте вместе с интерпретатором Python идет IDLE (интегрированная среда разработки). По своей сути она подобна интерпретатору, запущенному в интерактивном режиме с расширенным набором возможностей (подсветка синтаксиса, просмотр объектов, отладка и т.п.).

Для запуска IDLE в Windows необходимо перейти в папку Python в меню “Пуск” и найти там ярлык с именем “IDLE (Python 3.X XX-bit)”.

Для запуска редактора программы (кода) следует выполнить команду File->New File или сочетание клавиш Ctrl+N.

Любая Python-программа состоит из последовательности допустимых символов, записанных в определенном порядке и по определенным правилам.

Программа включает в себя:

  • комментарии;
  • команды;
  • знаки пунктуации;
  • идентификаторы;
  • ключевые слова.

Комментарии в Python обозначаются предваряющим их символом # и продолжаются до конца строки(т.е. в Python все комментарии являются однострочными), при этом не допускается использование перед символом # кавычек:

 

https://sites.google.com/site/moiboarkin/_/rsrc/1544965164902/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/1.png?height=213&width=400

Знаки пунктуации

В алфавит Python входит достаточное количество знаков пунктуации, которые используются для различных целей. Например, знаки "+" или " *"  могут использоваться для сложения и умножения, а знак запятой ","  - для разделения параметров функций.

Идентификаторы

Идентификаторы в Python это имена, используемые для обозначения переменной, функции, класса, модуля или другого объекта.

Ключевые слова

Некоторые слова имеют в Python специальное назначение и представляют собой управляющие конструкции языка.

Ключевые слова в Python:

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']


Типы данных

1.    None (неопределенное значение переменной)

2.    Логические переменные (Boolean Type)

3.    Числа (Numeric Type)

1.    int – целое число

2.    float – число с плавающей точкой

3.    complex – комплексное число

4.    Списки (Sequence Type)

1.    list – список

2.    tuple – кортеж

3.    range – диапазон

5.    Строки (Text Sequence Type )

1.    str

 

Ввод и вывод данных

Ввод данных осуществляется при помощи функции input(список ввода):

a = input()

print(a)

В скобках функции можно указать сообщение - комментарий к вводимым данным:

a = input ("Введите количество: ")

Команда input() по умолчанию воспринимает входные данные как строку символов. Поэтому, чтобы ввести целочисленное значение, следует указать функцию int():

a = int (input())

Для ввода вещественных чисел применяется функция float()

a=float(input())

Вывод данных осуществляется при помощи команды print(список вывода):

a = 1

b = 2

print(a)

print(a + b)

print('сумма = ', a + b)

Существует возможность записи команд в одну строку, разделяя их через ;. Однако не следует часто использовать такой способ, это снижает удобочитаемость:

a = 1; b = 2; print(a)

print (a + b)

print ('сумма = ', a + b)

Для команды print может задаваться так называемый сепаратор — разделитель между элементами вывода:

x=2

y=5

print ( x, "+", y, "=", x+y, sep = " " )

Результат отобразится с пробелами между элементами: 2 + 5 = 7

Простые арифметические операции над  числами

 

x + y

Сложение

x - y

Вычитание

x * y

Умножение

x / y

Деление

https://sites.google.com/site/moiboarkin/_/rsrc/1545965177719/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/math_prost.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1545965249435/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/math_prost_res.png

Результат выполнения программы с применением простых арифметических операций

 

 

Для форматированного вывода используется format:

Строковый метод format() возвращает отформатированную версию строки, заменяя идентификаторы в фигурных скобках {}. Идентификаторы могут быть позиционными, числовыми индексами, ключами словарей, именами переменных.

Синтаксис команды format:

поле замены        :=  "{" [имя поля] ["!" преобразование] [":" спецификация] "}"

имя поля                :=  arg_name ("." имя атрибута | "[" индекс "]")*

преобразование :=  "r" (внутреннее представление) | "s" (человеческое представление)

спецификация    :=  см. ниже

Аргументов в format() может быть больше, чем идентификаторов в строке. В таком случае оставшиеся игнорируются.

Идентификаторы могут быть либо индексами аргументов, либо ключами:

https://sites.google.com/site/moiboarkin/_/rsrc/1546934867668/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/ex_format._prog2.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1546934963795/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/ex_format2.png

 

В результате выведется число 11, а перед ним два пробела, так как указано использовать для вывода четыре знакоместа.

Или с несколькими аргументами:

https://sites.google.com/site/moiboarkin/_/rsrc/1546934667752/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/ex_format._prog.png

https://sites.google.com/site/moiboarkin/_/rsrc/1546934753061/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/ex_format.png

 

В итоге каждое из значений выводится из расчета 4 знакоместа.

Спецификация формата:

спецификация

[[fill]align][sign][#][0][width][,][.precision][type]

заполнитель

символ кроме '{' или '}'

выравнивание

  "<" | ">" | "=" | "^"

знак

  "+" | "-" | " "

ширина

int

точность

  int

тип

"b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

 

 

Тип

Значение

'd', 'i', 'u'

Десятичное число.

'o'

Число в восьмеричной системе счисления.

'x'

Число в шестнадцатеричной системе счисления (буквы в нижнем регистре).

'X'

Число в шестнадцатеричной системе счисления (буквы в верхнем регистре).

'e'

Число с плавающей точкой с экспонентой (экспонента в нижнем регистре).

'E'

Число с плавающей точкой с экспонентой (экспонента в верхнем регистре).

'f', 'F'

Число с плавающей точкой (обычный формат).

'g'

Число с плавающей точкой. с экспонентой (экспонента в нижнем регистре), если она меньше, чем -4 или точности, иначе обычный формат.

'G'

Число с плавающей точкой. с экспонентой (экспонента в верхнем регистре), если она меньше, чем -4 или точности, иначе обычный формат.

'c'

Символ (строка из одного символа или число - код символа).

's'

Строка.

'%'

Число умножается на 100, отображается число с плавающей точкой, а за ним знак %.

 

Для форматирования вещественных чисел с плавающей точкой используется следующая команда:

print('{0:.2f}'.format(вещественное число))

https://sites.google.com/site/moiboarkin/_/rsrc/1546937367233/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/format_real_prog.png

 

В результате выведется число с двумя знаками после запятой.

https://sites.google.com/site/moiboarkin/_/rsrc/1546937383500/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/format_real_res.png

 

 

Пример

Напишите программу, которая запрашивала бы у пользователя:

Вариант 0

- ФИО ( "Ваши фамилия, имя, отчество?")

- возраст ("Сколько Вам лет?")

- место жительства ("Где вы живете?")

После этого выводила бы три строки:

"Ваше имя"

"Ваш возраст"

"Вы живете в"

Решение

https://sites.google.com/site/moiboarkin/_/rsrc/1547130581578/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/string_prog_var0.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547130601822/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/string_res_var0.png

 

 

Задания для самостоятельной работы (по вариантам)

 

Напишите программу, которая запрашивала бы у пользователя:

Вариант 1

Имя, Фамилия, Возраст, Место жительства

- фамилия, имя ( "Ваши фамилия, имя?")

- возраст ("Сколько Вам лет?")

- место жительства ("Где вы живете?")

После этого выводила бы три строки:

"Ваши фамилия, имя"

"Ваш возраст"

"Вы живете в"

 

Вариант 2

Имя, Дата рождения, Образование

- имя ("Ваше, имя?")

- дата рождения ("Ваша дата рождения?")

- образование ("Где Вы учитесь?")

После этого выводила бы три строки:

"Ваше имя"

"Дата рождения"

"Вы учитесь в "

 

Вариант 3

Фамилия, Место жительства

- Фамилия( "Ваша фамилия?")

- место жительства ("Где Вы живете?")

После этого выводила бы две строки:

"Ваша фамилия"

"Вы живете в"

 

Вариант 4

Фамилия, Место рождения, любимая музыка

- Фамилия, ("Ваша фамилия?")

- место рождения ("Где Вы родились?")

- музыка("Какая музыка нравится? ")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Вы родились в"

"Ваша любимая музыка "

 

Вариант 5

Имя, Фамилия, ФИО мамы, ФИО отца

- ФИО (например, "Ваши фамилия, имя, отчество?")

- возраст ("Сколько Вам лет?")

- место жительства ("Где Вы живете?")

После этого выводила бы три строки:

"Ваши имя, фамилия, отчество"

"Ваш возраст"

"Вы живете в"

 

Вариант 6

Имя, Любимый предмет в ВУЗе, год обучения

- имя ( "Ваше имя?")

- любимый предмет ("Какой Ваш любимый предмет в ВУЗе?")

- номер класса ("На каком курсе Вы учитесь?")

После этого выводила бы три строки:

"Ваше имя"

"Ваш любимый предмет в ВУЗе"

"Вы учитесь на курсе "

 

Вариант 8

Имя, Фамилия, Отчество, Хобби

- ФИО (например, "Ваши фамилия, имя, отчество?")

- хобби ("Чем Вы увлекаетесь?")

После этого выводила бы две строки:

"Ваши имя, фамилия, отчество"

"Ваше хобби"

 

Вариант 9

Имя, Фамилия, любимый спорт

- Фамилия, имя ( "Ваши фамилия, имя?")

- образование ("В каком ВУЗе Вы учитесь?")

("На каком отделении Вы учитесь?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Вы учитесь в  "

"Вы учитесь на отделении "

 

Вариант 10

Имя, Фамилия, Любимый предмет в институте, ФИО куратора

- Фамилия, имя ( "Ваши фамилия, имя?")

- любимый предмет в ВУЗе ("Какой Ваш любимый предмет в ВУЗе?")

- ФИО классного руководителя ("ФИО Вашего классного руководителя?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Ваш любимый предмет в ВУЗе "

"ФИО Вашего куратора"

 

Вариант 11

Имя, Фамилия, Возраст, Дата рождения

- Фамилия, имя ("Ваши фамилия, имя?")

- возраст ("Сколько Вам лет?")

- дата рождения ("Когда Вы родились?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Ваш возраст"

"Дата Вашего рождения"

 

Вариант 12

Имя, Фамилия, Место жительства, Месторождения

- Фамилия, имя ( "Ваши фамилия, имя?")

- место рождения ("Где Вы родились?")

- место жительства ("Где Вы живете?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Вы родились в"

"Вы живете в"

 

Вариант 13

Имя, Фамилия, Возраст, Номер телефона

- Фамилия, имя  ("Ваши фамилия, имя?")

- возраст ("Сколько тебе лет?")

- номер телефона ("Номер Вашего телефона?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Ваш возраст"

"Ваш номер телефона"

 

Вариант 14

Имя, Фамилия, Страна, Край , Город

- Фамилия, имя ( "Ваши фамилия, имя?")

- страна ("В какой стране Вы живете?")

- город ("В каком городе Вы живете?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Вы живете в стране"

"Вы живете в крае"

"Вы живете в городе"

 

 

 

Список литературы

 

1. https://www.opennet.ru/docs/RUS/python/python_b.html

2. https://metanit.com/python/tutorial/1.1.php

3. https://pythonworld.ru/osnovy

 

 

 

 

 

Лабораторная работа 2 Математические операции в Python

Цель работы: познакомиться с основными математическими операциями в Python

 

Язык Python, благодаря наличию огромного количества библиотек для решения разного рода вычислительных задач, сегодня является конкурентом таким пакетам как Matlab и Octave. Запущенный в интерактивном режиме, он, фактически, превращается в мощный калькулятор. В этом уроке речь пойдет об арифметических операциях, доступных в данном языке Арифметические операции изучим применительно к числам.

Если в качестве операндов некоторого арифметического выражения используются только целые числа, то результат тоже будет целое число. Исключением является операция деления, результатом которой является вещественное число. При совместном использовании целочисленных и вещественных переменных, результат будет вещественным.

 

 В этом уроке речь пойдет об арифметических операциях, доступных в данном языке.

Если в качестве операндов некоторого арифметического выражения используются только целые числа, то результат тоже будет целое число. Исключением является операция деления, результатом которой является вещественное число. При совместном использовании целочисленных и вещественных переменных, результат будет вещественным.

 

Целые числа (int)

 

Числа в Python 3 поддерживают набор самых обычных математических операций:

 

x + y

Сложение

x - y

Вычитание

x * y

Умножение

x / y

Деление

x // y

Получение целой части от деления

x % y

Остаток от деления

-x

Смена знака числа

abs(x)

Модуль числа

divmod(x, y)

Пара (x // y, x % y)

x ** y

Возведение в степень

pow(x, y[, z])

x : Число, которое требуется возвести в степень.
y : Число, являющееся степенью, в которую нужно возвести первый аргумент. Если число отрицательное или одно из чисел "x" или "y" не целые, то аргумент "z" не принимается.
z : Число, на которое требуется произвести деление по модулю. Если число указано, ожидается, что "x" и "y" положительны и имеют тип int.

 

Пример применения вышеописанных операций над целыми числами

https://sites.google.com/site/moiboarkin/_/rsrc/1547291314000/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/ex_math1.png

 

    Вещественные числа (float)

Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам.

Пример применения вышеописанных операций над вещественными числами

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547291478218/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/ex_math2.png


Библиотека (модуль) math

В стандартную поставку Python входит библиотека math, в которой содержится большое количество часто используемых математических функций.

Для работы с данным модулем его предварительно нужно импортировать.

https://sites.google.com/site/moiboarkin/_/rsrc/1547052180897/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/4.png

 

Рассмотрим наиболее часто используемые функции модуля math

 

math.ceil(x)

Возвращает ближайшее целое число большее, чем x

math.fabs(x)

Возвращает абсолютное значение числа x

math.factorial(x)

Вычисляет факториал x

math.floor(x)

Возвращает ближайшее целое число меньшее, чем x

math.exp(x)

Вычисляет e**x

math.log2(x)

Логарифм по основанию 2

math.log10(x)

Логарифм по основанию 10

math.log(x[, base])

По умолчанию вычисляет логарифм по основанию e, дополнительно можно указать основание логарифма

math.pow(x, y)

Вычисляет значение x в степени y

math.sqrt(x)

Корень квадратный от x

 

Пример применения вышеописанных функций над числами

В программе определены 4 переменные - a, b, c, d, каждая из которых является либо целым числом, либо вещественным, либо отрицательным.

Командой print() выводится значение каждой переменной на экран при выполнении программы.

В переменную z помещается результат выполнения функции модуля math.

Затем командой print() выводится сообщение в виде используемой функции и её аргумента и результат её выполнения.

https://sites.google.com/site/moiboarkin/_/rsrc/1545192487069/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/math.png

Пример программы на Python

 

https://sites.google.com/site/moiboarkin/_/rsrc/1545192529189/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/math_result.png

Результат выполнения программы с применением функций модуля math

 

Тригонометрические функции модуля math

math.cos(x)

Возвращает cos числа X

math.sin(x)

Возвращает sin числа X

math.tan(x)

Возвращает tan числа X

math.acos(x)

Возвращает acos числа X

math.asin(x)

Возвращает asin числа X

math.atan(x)

Возвращает atan числа X

 

Пример применения вышеописанных функций над числами

В программе определена переменная x, содержащая целое число. 

Значение переменной выводится командой print() на экран. 

В переменную z помещается результат выполнения тригонометрической функции модуля math.

Затем командой print() выводится сообщение в виде используемой функции и её аргумента и результат её выполнения.

https://sites.google.com/site/moiboarkin/_/rsrc/1545193670663/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/sincos.png

Пример программы с использованием тригонометрических функций модуля math

https://sites.google.com/site/moiboarkin/_/rsrc/1545193738067/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/sincos_result.png

Результат выполнения программы с применением  тригонометрических функций модуля math

 

Константы:

  • math.pi - число Pi.
  • math.e - число е (экспонента).

Пример 

Напишите программу, которая бы вычисляла заданное арифметическое выражение при заданных переменных. Ввод переменных осуществляется с клавиатуры. Вывести результат с 2-мя знаками после запятой.

Вариант 0 

https://sites.google.com/site/moiboarkin/_/rsrc/1546940520093/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/lab2_example.png

x=10; t=1

Решение


Сначала импортируем модуль math. Для этого воспользуемся командой import math.
Затем следует ввести значения двух переменных целого типа x и t. 
Для ввода данных используется команда input, но так как в условии даны целые числа, то нужно сначала определить тип переменных: x=int(), t=int().
Определив тип переменных, следует их ввести, для этого в скобках команды int() нужно написать команду input().
Для переменной x это выглядит так: x=int(input("сообщение при вводе значения")).
Для переменной t аналогично: t=int(input("сообщение при вводе значения")).
Следующий шаг - это составление арифметического выражения, результат которого поместим в переменную z.
Сначала составим числитель. Выглядеть он будет так: 9*math.pi*t+10*math.cos(x).
Затем нужно составить знаменатель, при этом обратим внимание на то, что числитель делится на знаменатель, поэтому и числитель и знаменатель нужно поместить в скобки (), а между ними написать знак деления /.
Выглядеть это будет так: (9*math.pi*t+10*math.cos(x))/(math.sqrt(t)-math.fabs(math.sin(t))).
Последним шагом является умножение дроби на экспоненту в степени x.
Так как умножается вся дробь, то следует составленное выражение поместить в скобки (), а уже потом написать функцию math.pow(math.e,x).
В результате выражение будет иметь вид:
z=((9*math.pi*t+10*math.cos(x))/(math.sqrt(t)-math.fabs(math.sin(t))))*math.pow(math.e,x).
При составлении данного выражения следует обратить внимание на количество открывающихся и закрывающихся скобок.
Командой print() выведем значение переменной, отформатировав его командой format.
Сам формат записывается в апострофах в фигурных скобках {}.
В задаче требуется вывести число с двумя знаками после запятой, значит вид формата будет выглядеть следующим образом: {0:.2f}, где 2 - это количество знаков после запятой, а f указывает на то, что форматируется вещественное число. При этом перед 2 нужно поставить точку, указав тем самым на то, что форматируем именно дробную часть числа.

 

https://sites.google.com/site/moiboarkin/_/rsrc/1546941308784/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/lab2_example_prog.png

 

Результат

https://sites.google.com/site/moiboarkin/_/rsrc/1546941373474/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/lab2_example_res.png

 

 Лабораторные задания

Вариант 1

 Вычислить.      и     ;  если          

         x = 2; у = 6; z = 7.

Вариант 2.

Вычислить      и    если   x = 5; у = 1; z = 4.

 

Вариант 3.

Вычислить  и     если    

          x = 1; у = 12; z = 6.

Вариант 4.

Вычислить  и    если   

        x = 11; у = 5; z = 10.

 

Вариант 5.

Вычислить      и       если        

          x = 15; у = 7; z = 3.

Вариант 6.

Вычислить   и     если

 x = 3; у = 4; z = 5.

Вариант 7.

Вычислить   и   если

  x = 5;  у = 3; z = 17.

Вариант 8.

Вычислить  и   если

x = 7; у = 4; z = 8.

Вариант 9.

Вычислить   и  если  x = 17; у = 16; z = 15.

Вариант 10.

Вычислить   и    если  

 x = 6; у = 7; z = 8.

Вариант 11.

Вычислить   и    если  x = 3; у = 4; z = 5.

Вариант 12.

Вычислить   и    если x = 4; у = 5; z = 6.

Вариант 13.

Вычислить  и    если 

x = 5; у = 6; z = 7.

Вариант 14.

Вычислить   и  если  x = 8; у = 9; z = 10.

Вариант 15. 

Вычислить  и ;   если  x = 9; у = 10; z = 11

Вариант 16

Даны a,b,c,x,y. Вычислить

 

Вариант 17

Даны a,b,c,x,y. Вычислить

 

Вариант 18

Даны a,b,c,x,y. Вычислить

 

 

Вариант 19

Даны a,b,c,x,y. Вычислить

 

Вариант 20

Даны a,b,c,x,y. Вычислить

 

 

Вариант 21

Даны a,b,c,x,y. Вычислить

 

Вариант 22

Даны a,b,c,x,y. Вычислить

 

Вариант 23

Даны a,b,c,x,y. Вычислить

 

Вариант 24

Даны a,b,c,x,y. Вычислить

Вариант 25

Даны a,b,c,x,y. Вычислить

Вариант 26

Даны a,b,c,x,y. Вычислить

Вариант 27

Даны a,b,c,x,y. Вычислить

 

Вариант 28

Даны a,b,c,x,y. Вычислить

 

Вариант 29

Даны a,b,c,x,y. Вычислить

Вариант 30

Даны a,b,c,x,y. Вычислить

 

 

 

 

 

 

Лабораторная работа 3 Структура ветвление в Python

Цель работы: познакомиться со структурой ветвление (if, if-else, if-elif-else). Научиться работать с числами и строками используя данную структуру.

Условный оператор ветвления if, if-else, if-elif-else

Оператор ветвления if  позволяет выполнить определенный набор инструкций в зависимости от некоторого условия. Возможны следующие варианты использования.

1. Конструкция if
Синтаксис оператора if выглядит так:
if логическое выражение:
    команда_1
    команда_2
    ...
    команда_n

После оператора if  записывается логическое выражение. 

Логическое выражение — конструкция языка программирования, результатом вычисления которой является «истина» или «ложь».

Если это выражение истинно, то выполняются инструкции, определяемые данным оператором.

Выражение является истинным, если его результатом является число не равное нулю, непустой объект, либо логическое True. После выражения нужно поставить двоеточие “:”.


ВАЖНО: блок кода, который необходимо выполнить, в случае истинности выражения, отделяется четырьмя пробелами слева!

 

Программа запрашивает у пользователя два числа, затем сравнивает их и если числа равны, то есть логическое выражение A==B истинно, то выводится соответствующее сообщение.

https://sites.google.com/site/moiboarkin/_/rsrc/1545618098814/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1545618173918/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if_res.png

Результат выполнения программы с использованием условного оператора if

2.     Конструкция if – else
Бывают случаи, когда необходимо предусмотреть альтернативный вариант выполнения программы. Т.е. при истинном условии нужно выполнить один набор инструкций, при ложном – другой. Для этого используется конструкция if – else.


3.     Синтаксис оператора if – else выглядит так:

if  логическое выражение:
    команда_1
    команда_2
    ...
    команда_n
else:
    команда_1    
    команда_2
    ...
    команда_n


Программа запрашивает у пользователя два числа, затем сравнивает их и если числа равны, то есть логическое выражение A==B истинно, то выводится соответствующее сообщение. В противном случае выводится сообщение, что числа не равны.

https://sites.google.com/site/moiboarkin/_/rsrc/1545618538122/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if-else.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1545618569544/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if-else_res.png

Результат выполнения программы с использованием условного оператора if-else

 

3. Конструкция if – elif – else
    Для реализации выбора из нескольких альтернатив можно использовать конструкцию if – elif – else.
Синтаксис оператора if – elif – else выглядит так:

if  логическое выражение_1:
    команда_1

    команда_2

    ...

    команда_n
elif логическое выражение_2:
    команда_1

    команда_2

    ...

    команда_n
elif  логическое выражение_3:

    команда_1

    команда_2

    ...

    команда_n

else:
    команда_1

    команда_2

    ...

    команда_n

 

Программа запрашивает число у пользователя и сравнивает его с нулём a<0. Если оно меньше нуля, то выводится сообщение об этом. Если первое логическое выражение не истинно, то программа переходит ко второму - a==0. Если оно истинно, то программа выведет сообщение, что число равно нулю, в противном случае, если оба вышеуказанных логических выражения оказались ложными, то программа выведет сообщение, что введённое число больше нуля.

https://sites.google.com/site/moiboarkin/_/rsrc/1545619092595/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if-elif-else.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1545619149100/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if-elif-else_res.png

Результат выполнения программы с использованием условного оператора if-elif-else

 

 

 

Пример 

Вариант 0

Дано 3 числа. Найти минимальное среди них и вывести на экран.

Решение

Для простоты построим блок-схему задачи.

https://sites.google.com/site/moiboarkin/_/rsrc/1547165402799/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/block.png?height=344&width=400

Командами

a=input('')
b=input('')
c=input('')

введём три числа, присвоив значения переменным a, b, c.

Условной конструкцией if-else проверим на истинность логическое выражение a<b.

Если оно истинно, то переходим на проверку логического выражения a<c. Если оно истинно, то переменной "y" присвоим значение переменной "а", т.е. "а" будет минимальным, а иначе "y" присвоится значение переменной "с".

Если в начале логическое выражение a<b оказалось ложным, то переходим на проверку другого логического выражения b<c.

Если оно истинно, то "у" присвоится значение переменной "b", иначе "c".

Командой print() выводим минимальное значение.



https://sites.google.com/site/moiboarkin/_/rsrc/1547163816165/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/ex_ifelse_prog_var0.png

Пример программы

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547163828535/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/ex_ifelse_prog_var0_res.png

Результат выполнения программы

 

 Задания для самостоятельной работы (по вариантам)

 

Вариант 1

Даны три целых числа. Выбрать из них те, которые принадлежат интервалу [1,3].

 

Вариант 2

Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).

 

Вариант 3

Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется в том случае, если сумма покупки больше 500 руб., в 5% - если сумма больше 1000 руб.

 

Вариант 4

Написать программу, которая бы по введенному номеру единицы измерения (1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер) и массе М выдавала соответствующее значение массы в килограммах.

 

Вариант 5

Найти косинус минимального из 4 заданных чисел.

 

Вариант 6

Вывести на экран синус максимального из 3 заданных чисел.

 

Вариант 7

Даны три стороны одного треугольника и три стороны другого треугольника. Определить, будут ли эти треугольники равновеликими, т. е. имеют ли они равные площади. Если это не так, то вывести «Foul!!!»

 

Вариант 8

Составьте программу подсчёта площади равнобедренного треугольника. Если площадь треугольника чётная, разделить её на 2, в противном случае вывести сообщение «Не могу делить на 2!»

 

Вариант 9

Составить программу, которая по данному числу (1-12) выводит название соответствующего ему месяца на английском языке.

 

Вариант 10

Составить программу, осуществляющую перевод величин из радианной меры в градусную или наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие.

Вариант 11

Дано три числа. Найти количество положительных чисел среди них;

 

Вариант 12

Если действительные числа x и y – одного знака, найти их среднее геометрическое, в противном случае найти их среднее арифметическое.

 

Вариант 13

Определить, существует ли прямоугольный треугольник со сторонами x,y,z. Если – да, вычислить его площадь.

 

Вариант 14

Определить, существует ли треугольник с длинами сторон a, b, c.  Если – да, вычислить его площадь по формуле Герона.

Формула Герона имеет вид:

S=p(p-a)(p-b)(p-c),  где p=(a+b+c)/2

 

Вариант 15

Вычислить значение функции f(x), если

https://lh4.googleusercontent.com/J9zOFCB7snth0xQIgd2WedxXZ5jczkEtDr5DYyO1m6vZ288yLH09uwGLQKYoQZ-9nsZQKqbXwXdbvHSbVc6Z0aV4Hrij-shkyuuAhRXtO_TJpEM_brcjk6orjck0c45r6pxYAA0CwiaIhZ55ug



Список литературы



1. http://skobki.com/python-struktury-vetvleniya-operatory-if-else-if-ifelif/

2. https://pythonworld.ru/osnovy/instrukciya-if-elif-else-proverka-istinnosti-trexmestnoe-vyrazhenie-ifelse.html

3. https://younglinux.info/python/elif.php

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа 4 Работа с циклами в Python

Цель работы: познакомиться с циклическими конструкциями

В Python существуют два типа цикличных выражений:

  • Цикл while
  • Цикл for

1. Цикл while в Python
    Инструкция while в Python повторяет указанный блок кода до тех пор, пока указанное в цикле логическое выражение будет оставаться истинным.
Синтаксис цикла while:

while логическое выражение:

команда 1
команда 2
...
команда n

    После ключевого слова while указывается условное выражение, и пока это выражение возвращает значение True, будет выполняться блок инструкций, который идет далее.
    Все инструкции, которые относятся к циклу while, располагаются на последующих строках и должны иметь отступ от начала строки (4 пробела).

https://sites.google.com/site/moiboarkin/_/rsrc/1545625222444/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/while.png

Пример программы на Python

 

https://sites.google.com/site/moiboarkin/_/rsrc/1545625244424/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/while_res.png

Результат выполнения программы с использованием циклического оператора while

2.Цикл for в Python:
    Цикл for в Python обладает способностью перебирать элементы любого комплексного типа данных (например, строки или списка). 
    Синтаксис цикла for:
for int in range():
    команда 1

    команда 2

    ...

   команда n

Переменной int присваивается значение первого элемента функции range(), после чего выполняются команды. Затем переменной int присваивается следующее по порядку значение и так далее до тех пор, пока не будут перебраны все элементы функции range().

 

Функция range() является универсальной функцией Python для создания списков (list) содержащих арифметическую прогрессию. Чаще всего она используется в циклах for.

range(старт, стоп, шаг) - так выглядит стандартный вызов функции range() в Python. По умолчанию старт равняется нулю, шаг единице.

 

Вариант 0

1. Найти сумму n элементов следующего ряда чисел: 1 -0.5 0.25 -0.125 ... n. Количество элементов (n) вводится с клавиатуры. Вывести на экран каждый член ряда и его сумму. Решить задачу используя циклическую конструкцию for.

Решение:

В данном случае ряд чисел состоит из элементов, где каждый следующий меньше предыдущего в два раза по модулю и имеет обратный знак. Значит, чтобы получить следующий элемент, надо предыдущий разделить на -2.

Какой-либо переменной надо присвоить значение первого элемента ряда (в данном случае это 1). Далее в цикле добавлять ее значение к переменной, в которой накапливается сумма, после чего присваивать ей значение следующего элемента ряда, разделив текущее значение на -2. Цикл должен выполняться n раз.

https://sites.google.com/site/moiboarkin/_/rsrc/1547274154746/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/ex_for_var0_prog.png

Пример программы с циклом for

https://sites.google.com/site/moiboarkin/_/rsrc/1547274168171/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/ex_for_var0_res.png

Результат выполнения программы

2. Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.

Решение:

Для начала введём целое число командой int(input(текст сообщения)).

Затем зададим переменной i значение 2. Переменная i выполняет роль счётчика. Если задать ей значение 1, то условие задачи не будет выполнено, а результатом всегда будет 1.

В цикле while в качестве логического выражения используется команда n%i сравниваемая с нулём. Таким образом, если остаток от деления введённого числа на текущее значение i не равно нулю, то счётчик увеличивается на 1, а если равно нулю цикл заканчивается и командой print() выводится сообщение и значение i.

https://sites.google.com/site/moiboarkin/_/rsrc/1547275785094/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/ex_while_var0_prog.png

Пример программы с циклом while

https://sites.google.com/site/moiboarkin/_/rsrc/1547276081707/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/ex_while_var0_res.png

Результат выполнения программы

 

Вариант 1

1. Дано вещественное число – цена 1 кг конфет. Вывести стоимость 1, 2, … 10 кг конфет. Решить задачу используя циклическую конструкцию for.

2. Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти: а) сумму всех чисел последовательности; б) количество всех чисел последовательности

Решить задачу используя циклическую конструкцию while.

Вариант 2

1. Даны два числа A и B (A<B). Найти сумму всех целых чисел от А до  В включительно. Решить задачу используя циклическую конструкцию for.

2. Дана последовательность отрицательных целых чисел, оканчивающаяся положительным числом. Найти среднее арифметическое всех чисел последовательности (без учета положительным числа).

Решить задачу используя циклическую конструкцию while.

Вариант 3

1. Даны два числа A и B (A<B). Найти сумму квадратов всех целых чисел от А до В включительно. Решить задачу используя циклическую конструкцию for.

2. Дана последовательность из n целых чисел. Первое число в последовательности чётное. Найти сумму всех идущих подряд в начале последовательности чётных чисел. Условный оператор не использовать

Решить задачу используя циклическую конструкцию while.

Вариант 4

1. Найти среднее арифметическое всех целых чисел от a до 200 (значения a и b вводятся с клавиатуры; a≤ 200). Решить задачу используя циклическую конструкцию for.

2. Дана последовательность из n вещественных чисел, начинающаяся с положительного числа. Определить, какое количество положительных чисел записано в начале последовательности. Условный оператор не использовать.

Решить задачу используя циклическую конструкцию while.

Вариант 5

1. Найти сумму всех целых чисел от a до b (значения a и b вводятся с клавиатуры; b ≥a). Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 0), являющееся некоторой степенью числа 2: N = 2^K. Найти целое число K — показатель этой степени.

Решить задачу используя циклическую конструкцию while.

Вариант 6

1. Найти сумму квадратов всех целых чисел от a до 50 (значение a вводится с клавиатуры; 0 ≤a≤50). Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 1). Найти наименьшее целое число K, при котором выполняется неравенство 5^K > N.

Решить задачу используя циклическую конструкцию while.

Вариант 7

1. Дана непустая последовательность целых чисел, оканчивающаяся нулем.

Найти:

а) сумму всех чисел последовательности;

б) количество всех чисел последовательности.

Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 1). Найти наибольшее целое число K, при котором выполняется неравенство 2^K > N.

Решить задачу используя циклическую конструкцию while.

Вариант 8

1. Дана последовательность из n вещественных чисел. Первое число в последовательности нечетное. Найти сумму всех идущих подряд в начале последовательности нечетных чисел. Условный оператор не использовать. Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, найти количество и сумму его цифр.

Решить задачу используя циклическую конструкцию while.

Вариант 9

1. Среди чисел 1, 4, 9, 16, 25, ... найти первое число, большее n. Решить задачу используя циклическую конструкцию for.

2.Среди чисел 1, 5 10, 16, 23, ... найти первое число, большее n. Условный оператор не использовать.

Решить задачу используя циклическую конструкцию while.

Вариант 10

1. Известны оценки по физике каждого из 20 учеников класса. Определить среднюю оценку. Решить задачу используя циклическую конструкцию for.

2.Дано число A (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет меньше A, и саму эту сумму.

Решить задачу используя циклическую конструкцию while.

Вариант 11

1. Известно сопротивление каждого из элементов электрической цепи. Все элементы соединены последовательно. Определить общее сопротивление цепи. Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 0). Найти наибольшее целое число K, квадрат которого не превосходит N: K^2 ≤ N. Функцию извлечения квадратного корня не использовать.

Решить задачу используя циклическую конструкцию while.

Вариант 12

1. Известны оценки по физике каждого ученика двух классов. Определить среднюю оценку в каждом классе. Количество учащихся в каждом классе одинаковое. Решить задачу используя циклическую конструкцию for.

2. Выведите на экран для числа 2 его степени от 0 до 20

Решить задачу используя циклическую конструкцию while.

Вариант 13

1. В области 12 районов. Известны количество жителей (в тысячах человек) и площадь (в км2) каждого района. Определить среднюю плотность населения по области в целом. Решить задачу используя циклическую конструкцию for.

2.Мой богатый дядюшка подарил мне один доллар в мой первый день рождения. В каждый день рождения он удваивал свой подарок и прибавлял к нему столько долларов, сколько лет мне исполнилось. Написать программу, указывающую, к какому дню рождения подарок превысит 100$.

Решить задачу используя циклическую конструкцию while.

Вариант 14

1. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, ..., 24 часа, если первоначально была одна амеба. Решить задачу используя циклическую конструкцию for.

2. Вывести таблицу значений функции y = -0.5x + x. Значения аргумента (x) задаются минимумом, максимумом и шагом. Например, если минимум задан как 1, максимум равен 3, а шаг 0.5. То надо вывести на экран изменение x от 1 до 3 с шагом 0.5 (1, 1.5, 2, 2.5, 3) и значения функции (y) при каждом значении x.

Решить задачу используя циклическую конструкцию while.

Вариант 15

1. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. Определить:

а) пробег лыжника за второй, третий, ..., десятый день тренировок;

б) какой суммарный путь он пробежал за первые 7 дней тренировок.

Решить задачу используя циклическую конструкцию for.

2. Найти сумму и произведение цифр, введенного целого числа. Например, если введено число 325, то сумма его цифр равна 10 (3+2+5), а произведение 30 (3*2*5).

Решить задачу используя циклическую конструкцию while.

 

Список литературы

1.     https://pythonworld.ru/osnovy/cikly-for-i-while-operatory-break-i-continue-volshebnoe-slovo-else.html

2.     https://python-scripts.com/loops-for-while

3.     https://metanit.com/python/tutorial/2.7.php

4.     https://younglinux.info/python/for.php

5.     http://labs.org.ru/python-2/

 

Лабораторная работа 5 Работа со строками в Python

 

Цель работы: познакомится с методами работы со строками.
Учащийся должен:
Владеть:
    Навыками составления линейных алгоритмов на языке программирования Python с использованием строковых данных;
Уметь:
    Применять функции и методы строк при обработке строковых данных;
Знать:
    Операции и методы обработки строк.

Строка — базовый тип представляющий из себя неизменяемую последовательность символов; str от «string» — «строка».

Функции и методы работы со строками

Функция или метод

Назначение

S1 + S2

Конкатенация (сложение строк)

S1 * 3

Повторение строки

S[i]

Обращение по индексу

S[i:j:step]

Извлечение среза

len(S)

Длина строки

S.join(список)

Соединение строк из последовательности str через разделитель, заданный строкой

S1.count(S[, i, j]) 

количество вхождений подстроки s в строку s1. Результатом является число. Можно указать позицию начала поиска i и окончания поиска j

S.find(str, [start],[end])

Поиск подстроки в строке. Возвращает номер первого вхождения или -1

S.index(str, [start],[end])

Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError

S.rindex(str, [start],[end])

Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError

S.replace(шаблон, замена)

Замена шаблона

S.split(символ)

Разбиение строки по разделителю

S.upper()

Преобразование строки к верхнему регистру

S.lower()

Преобразование строки к нижнему регистру

Ниже приведена программа, демонстрирующая использование функций и методов работы со строками.

https://sites.google.com/site/moiboarkin/_/rsrc/1547081137555/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-3/ex_string.png

Пример программы на Python

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547081157833/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-3/ex_string_res.png

Результат выполнения программы с использованием функций и методов работы со строками

 

Пример

Вариант 0

Проверить, будет ли строка читаться одинаково справа налево и слева направо (т. е. является ли она палиндромом).

Решение

Сначала введём строку командой: s=input('Введите строку ').

Затем определим логическую переменную  flag и присвоим ей значение 1: flag=1.

Для начала в введённой строке нужно удалить пробелы. Для этого воспользуемся циклической конструкцией for, которая выполнится столько раз, какую имеет длину строка. Длину строки определим функцией len(s).

В теле цикла будем проверять следующее условие: s[i]!=' '. Данное логическое выражение будет истинно в том случае, если i-ый элемент строки не будет равен пробелу, тогда выполнится команда следующая после двоеточия: string+=s[i].

К сроке string, которая была объявлена в начале программы, будет добавляться посимвольно строка s, но уже без пробелов.

Для проверки строки на "палиндром" воспользуемся циклической конструкцией for.

Длина половины строки находится делением нацело на 2.  Если количество символов нечетно,  то стоящий в середине не учитывается, т.к. его сравниваемая пара - он сам.

Количество повторов цикла равно длине половины строки. Длину строки определим функцией len(s), где аргумент введённая нами строка s. Зная длину строки, можно вычислить количество повторов цикла. Для этого целочисленно разделим длину строки на 2: len(s)//2.

Для задания диапазона для цикла используем функцию range(), в которой аргументом будет являться половина длины строки: range(len(s//2 )).

for i in range(len(s//2 )).

Если символ с индексом i не равен "симметричному" символу с конца строки (который находится путем индексации с конца)

if s[i] != s[-1-i],

то переменной flag присваивается значение 0 и происходит выход из цикла командой break. 

Далее, при помощи условной конструкции if-else в зависимости от значения flag либо - 0, либо -1 выводится сообщение, что строка палиндром, либо нет.

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547426930984/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-3/ex_string_var0_prog.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1547427035828/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-3/ex_string_var0_res.png

Результат выполнения программы

 

Задания для самостоятельной работы (по вариантам)

 

Вариант 1

Дана строка, содержащая русскоязычный текст. Найти количество слов, начинающихся с буквы "е".

 

Вариант 2

В строке заменить все двоеточия (:) знаком процента (%). Подсчитать количество замен.

 

Вариант 3

В строке удалить символ точку (.) и подсчитать количество удаленных символов.

Вариант 4

В строке заменить букву(а) буквой (о). Подсчитать количество замен. Подсчитать, сколько символов в строке.

 

Вариант 5

В строке заменить все заглавные буквы строчными.

 

Вариант 6

В строке удалить все буквы "а"  и подсчитать количество удаленных символов.

 

Вариант 7

Дана строка. Преобразовать ее, заменив звездочками все буквы "п", встречающиеся среди первых n/2 символов. Здесь n - длина строки.

Вариант 8

Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке.

 

Вариант 9

Определить, сколько раз в тексте встречается заданное слово.

 

Вариант 10

Дана строка-предложение на английском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы.

Вариант 11

Дана строка. Подсчитать самую длинную последовательность подряд идущих букв «н». Преобразовать ее, заменив точками все восклицательные знаки.

Вариант 12

Дана строка. Вывести все слова, оканчивающиеся на букву "я".

 

Вариант 13

Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобки. Вывести на экран все символы, расположенные внутри этих скобок.

Вариант 14

Дана строка. Вывести все слова, начинающиеся на букву "а" и слова, оканчивающиеся на букву "я".

 

Вариант 15

 Дана строка текста. Подсчитать количество букв «т» в строке.

 

 

 

Список литературы

 

 

1.     https://ps.readthedocs.io/ru/latest/strings.html

2.     https://pythonworld.ru/tipy-dannyx-v-python/stroki-literaly-strok.html

3.     https://pythonworld.ru/tipy-dannyx-v-python/stroki-funkcii-i-metody-strok.html

 

 

 

 

 

 

 

 

Лабораторная работа 6 Работа со списками. Операции над списками в Python

 

Цель работы: Изучение списков в Python.

 

Списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).

Список (list) – это структура данных для хранения объектов различных типов. 

 

Списки являются упорядоченными последовательностями, которые состоят из различных типов данных, заключающихся в квадратные скобки [ ] и отделяющиеся друг от друга с помощью запятой.

 

Создание списков на Python.

Создать список можно несколькими способами

 

1. Получение списка через присваивание конкретных значений.

Так выглядит в коде Python пустой список:

s = []  # Пустой список

 

Примеры создания списков со значениями:

https://sites.google.com/site/moiboarkin/_/rsrc/1547171900178/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog.png

 

Списки можно складывать (конкатенировать) с помощью знака «+»:

https://sites.google.com/site/moiboarkin/_/rsrc/1547172263718/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog1_res.png

Результат:

https://sites.google.com/site/moiboarkin/_/rsrc/1547172301822/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog1.png

 

2. Создание списка при помощи функции Split().

Используя функцию split в Python можно получить из строки список.

stroka ="Привет, страна"

lst=stroka.split(",")  

https://sites.google.com/site/moiboarkin/_/rsrc/1547547457539/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_split_prog.png

Результат:

https://sites.google.com/site/moiboarkin/_/rsrc/1547547471226/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_split_res.png

 

3. Генераторы списков.

В Python создать список можно также при помощи генераторов.

Первый способ.

Сложение одинаковых списков заменяется умножением:

Список из 10 элементов, заполненный единицами

l = [1]*10

 

Второй способ.

Пример 1.

l = [i for i in range(10)]

 

Пример 2.

c = [c * 3 for c in 'list']

print (c) # ['lll', 'iii', 'sss', 'ttt']

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547299742772/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list.png

 

Примеры использования генераторов списка.

Пример 1.

Заполнить список квадратами чисел от 0 до 9, используя генератор списка.

Решение:

l = [i*i for i in range(10)]

Пример 2.

Заполнить список числами, где каждое последующее число больше на 2.

l = [(i+1)+i for i in range(10)]

print(l)

https://sites.google.com/site/moiboarkin/_/rsrc/1547519534818/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list4.png


Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности.
random.randint(A, B) - случайное целое число N, A ≤ N ≤ B.
random.random() - случайное число от 0 до 1.

Случайные числа в списке:

10 чисел, сгенерированных случайным образом в диапазоне (10,80)
from random import randint

l = [randint(10,80) for x in range(10)]


10 чисел, сгенерированных случайным образом в диапазоне (0,1)
l
= [random() for i in range(10)]

https://sites.google.com/site/moiboarkin/_/rsrc/1547520842756/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list5_res.png


https://sites.google.com/site/moiboarkin/_/rsrc/1547520783992/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list5.png

 

4. Ввод списка (массива) в языке Python.

Для ввода элементов списка используется цикл for и команда range ():

for i in range(N):

   x[i] = int( input() )

Более простой вариант ввода списка:

x = [ int(input()) for i in range(N) ]

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547692616791/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_prog.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547692645732/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_res.png

 

Функция int здесь используется для того, чтобы строка, введенная пользователем, преобразовывалась в целые числа.


5.Вывод списка в языке Python.

Вывод целого списка:

print (L)

Поэлементный вывод списка:

for i in range(N):

  print ( L[i], end = " " )

https://sites.google.com/site/moiboarkin/_/rsrc/1547518016396/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog2_res.png

 

 

2. Методы списков.

Метод

Что делает

list.append(x)

Добавляет элемент в конец списка

list.extend(L)

Расширяет список list, добавляя в конец все элементы списка L

list.insert(i, x)

Вставляет перед i-ым элементом значение x

list.remove(x)

Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует

list.pop([i])

Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент

list.index(x, [start [, end]])

Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)

list.count(x)

Возвращает количество элементов со значением x

list.reverse()

Разворачивает список

list.copy()

Поверхностная копия списка

list.clear()

Очищает список

 

Ниже приведена программа, демонстрирующая методы работы списков.

https://sites.google.com/site/moiboarkin/_/rsrc/1547518558801/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog2.png

Пример программы на Python

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547518644911/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list2.png

Результат выполнения программы

 

 

 

Вариант 0

1. Из  массива X  длиной n, среди элементов которого  есть положительные, отрицательные и равные нулю, сформировать новый массив Y, взяв в него только те элементы из X,  которые больше по модулю заданного числа M. Вывести на  экран число M, данный и полученные массивы.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547424991714/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_prog_var0.png

https://sites.google.com/site/moiboarkin/_/rsrc/1547425095351/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_prog_var0_res.png

2. В массиве целых чисел все отрицательные элементы заменить на положительные. Вывести исходный массив и полученный.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547605451968/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_var0_2_prog.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547605554165/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_var0_2_res.png

 

Вариант 1

1. Дан одномерный массив, состоящий из N целочисленных элементов. Ввести массив с клавиатуры. Найти максимальный элемент. Вывести массив на экран в обратном порядке.

2. В массиве действительных чисел все нулевые элементы заменить на среднее арифметическое всех элементов массива.

Вариант 2

1. Дан одномерный массив, состоящий из N целочисленных элементов. Ввести массив с клавиатуры. Найти минимальный элемент. Вывести индекс минимального элемента на экран.

2. Дан массив целых чисел. Переписать все положительные элементы во второй массив, а остальные - в третий.

 

Вариант 3

1. В одномерном числовом массиве D длиной n вычислить сумму элементов с нечетными индексами. Вывести на экран массив D, полученную сумму.
2. Дан одномерный массив из 8 элементов. Заменить все элементы массива меньшие 15 их удвоенными значениями. Вывести на экран монитора преобразованный массив.

Вариант 4

1. Дан массив целых чисел. Найти максимальный элемент массива и его порядковый номер.
2. Дан одномерный массив целого типа. Получить другой массив, состоящий только из нечетных чисел исходного массива или сообщить, что таких чисел нет. Полученный массив вывести в порядке убывания элементов.

Вариант 5

1. Дан одномерный массив из 10 целых чисел. Вывести пары отрицательных чисел, стоящих рядом.
2. Дан целочисленный массив размера 10. Создать новый массив, удалив все одинаковые элементы, оставив их 1 раз.

Вариант 6

1. Дан одномерный массив из 10 целых чисел. Найти максимальный элемент и сравнить с ним остальные элементы. Вывести количество меньших максимального и больших максимального элемента.
2. Одномерный массив из 10-и целых чисел заполнить с клавиатуры, определить сумму тех чисел, которые >5.

Вариант 7

1. Дан массив целых чисел. Найти сумму элементов с четными номерами и произведение элементов с нечетными номерами. Вывести сумму и произведение.
2. Переставить в одномерном массиве минимальный элемент и максимальный.

Вариант 8

1. Найдите сумму и произведение элементов списка. Результаты вывести на экран.
2. В массиве действительных чисел все нулевые элементы заменить на среднее арифметическое всех элементов массива.

Вариант 9

1. Дан одномерный массив, состоящий из N вещественных элементов. Ввести массив с клавиатуры. Найти и вывести минимальный по модулю элемент. Вывести массив на экран в обратном порядке.
2. Даны массивы A и B одинакового размера 10. Вывести исходные массивы. Поменять местами их содержимое и вывести в начале элементы преобразованного массива A, а затем — элементы преобразованного массива B.

Вариант 10

1. Определите, есть ли в списке повторяющиеся элементы, если да, то вывести на экран это значение, иначе сообщение об их отсутствии.
2. Дан одномерный массив из 15 элементов. Элементам массива меньше 10 присвоить нулевые значения, а элементам больше 20 присвоить 1. Вывести на экран монитора первоначальный и преобразованный массивы в строчку.

 

Вариант 11

1 Найти наибольший элемент списка, который делиться на 2 без остатка и вывести его на экран.
2. Дан одномерный массив целого типа. Получить другой массив, состоящий только из четных чисел исходного массива, меньше 10, или сообщить, что таких чисел нет. Полученный массив вывести в порядке возрастания элементов.

Вариант 12

1. Найти наименьший нечетный элемент списка и вывести его на экран.
2. Даны массивы A и B одинакового размера 10. Поменять местами их содержимое и вывести вначале элементы преобразованного массива A, а затем — элементы преобразованного массива B.

Вариант 13

1. Дан одномерный массив целых чисел. Проверить, есть ли в нем одинаковые элементы. Вывести эти элементы и их индексы.
2. Дан одномерный массив из 8 элементов. Заменить все элементы массива меньшие 15 их удвоенными значениями. Вывести на экран монитора преобразованный массив.

Вариант 14

1. Найти максимальный элемент численного массива и поменять его местами с минимальным.

2. Программа заполняет одномерный массив из 10 целых чисел числами, считанными с клавиатуры. Определить среднее арифметическое всех чисел массива. Заменить элементы массива большие среднего арифметического на 1.

Вариант 15

1. Определите, есть ли в списке повторяющиеся элементы, если да, то вывести на экран эти значения.
2. Дан одномерный массив целого типа. Получить другой массив, состоящий только из нечетных чисел исходного массива или сообщить, что таких чисел нет. Полученный массив вывести в порядке убывания элементов.

 

Список литературы

1.     https://pythonworld.ru/tipy-dannyx-v-python/spiski-list-funkcii-i-metody-spiskov.html

2.     https://www.ibm.com/developerworks/ru/library/l-python_part_3/index.html

3.     https://devpractice.ru/python-lesson-7-work-with-list/

4.     http://labs.org.ru/python-6/

 

Лабораторная работа 7 Функции в Python

Цель работы: изучение функций в Python.

 

знать синтаксис функций, процедура с параметром, локальные и глобальные переменные;

уметь применять синтаксис функций при составлении программы;

владеть основными навыками работы с функциями.

 

Подпрограмма - это именованный фрагмент программы, к которому можно обратиться из другого места программы

 

Рассмотрим синтаксис функции:

def имя функции (Список параметров):

  Система команд


Для определения функции используется ключевое слово def, затем указывается имя функции и в скобках её формальные параметры, если они присутствуют. После ставится двоеточие и со следующей строки с отступом в 4 пробела указываются команды.

функция — вспомогательный алгоритм, выполняющий некоторые действия.

функция должна быть определена к моменту её вызова. Определение функции начинается со служебного слова def.
Вызов функции осуществляется по ее имени, за которым следуют круглые скобки, например, Err().
В одной программе может быть сколько угодно много вызовов одной и той же функции.
Использование функции сокращает код и повышает удобочитаемость.


функция с параметрами.
Как используются в Python параметры функции, рассмотрим на примере.

Пример.

Написать функцию, которая печатает раз указанный символ (введенный с клавиатуры), каждый с новой строки.

def printChar(s):
    print (s)
sim = input('введите символ')
printChar(sim) # первый вызов, вывод введенного символа
printChar('*') # второй вызов, вывод *

https://sites.google.com/site/moiboarkin/_/rsrc/1547772941044/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure1_prog.png

https://sites.google.com/site/moiboarkin/_/rsrc/1547772879421/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure1_res.png


Глобальная переменная — если ей присвоено значение в основной программе (вне процедуры).

Локальная переменная (внутренняя) известна только на уровне процедуры, обратиться к ней из основной программы и из других процедур нельзя.

Параметры функции — локальные переменные.

2. Примеры использования локальных и глобальных переменных.

Пример 1.

x = 3 # глобальная переменная

def pr(): # функция без параметров

  print (x) # вывод значения глобальной переменной

pr()

https://sites.google.com/site/moiboarkin/_/rsrc/1547773049024/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure2.png

 

 

Пример 2.

x = 3  # глобальная переменная

def pr(a): # функция с параметром

  print (a) # 4

pr(x) # передача параметра глобальной переменной (3)

https://sites.google.com/site/moiboarkin/_/rsrc/1547773556274/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure3.png

 

Существует возможность изменить значение глобальной переменной (не создавая локальную). В процедуре с помощью слова global:

x = 3 # глобальная переменная
def pr(): # функция без параметров
    global x
    x = pow(x,10)
    print (x) # вывод измененного значения глобальной переменной 
pr()

 

 

Функция - подпрограмма, к которому можно обратиться из другого места программы.

Для создания функции используется ключевое слово def, после которого указывается имя и список аргументов в круглых скобках. Тело функции выделяется также как тело условия (или цикла): четырьмя пробелами. 

 

Рассмотрим синтаксис функции:
def имя функции(Список параметров): 
    Система команд
    return выражение


Часть функций языка Python являются встроенными функциями, которые обеспечены синтаксисом самого языка. Например, int, input, randint.
Рассмотрим пример создания пользовательских функций.

Пример 1.
Вычислить сумму цифр числа.
def sumD(n): # определение функции с параметром
    sumD = 0
    while n!= 0:
        sumD += n % 10
        n = n // 10
    return sumD # возврат значения функции
# основная программа
print (sumD(int(input())) # вызов функции с параметром

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547779360944/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_function1.png

 

 

Вариант 0.

1. Определить, являются ли три треугольника равновеликими. Длины сторон вводить с клавиатуры. Для подсчёта площади треугольника использовать формулу Герона. Вычисление площади оформить в виде функции с тремя параметрами.

Формула Герона:

https://sites.google.com/site/moiboarkin/_/rsrc/1547742863615/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/geron.gif?height=147&width=320

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547743024592/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_function_var1_prog.png

 

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547743043928/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_function_var1_res.png

 

2. Ввести одномерный массив A длиной m. Поменять в нём местами первый и последний элементы. Длину массива и его элементы ввести с клавиатуры. В программе описать процедуру для замены элементов массива. Вывести исходные и полученные массивы.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547743751416/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure_var1_prog.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547743822288/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure_var1_res.png

 

 

 

Вариант 1.

1. Составить программу для вычисления площади разных геометрических фигур.

2. Даны 3 различных массива целых чисел (размер каждого не превышает 15). В каждом массиве найти сумму элементов и среднеарифметическое значение.

Вариант 2.

1. Вычислить площадь правильного шестиугольника со стороной, а, используя подпрограмму вычисления площади треугольника.

2.  Пользователь вводит две стороны трех прямоугольников. Вывести их площади. 

 

Вариант 3.

1. Даны катеты двух прямоугольных треугольников. Написать функцию вычисления длины гипотенузы этих треугольников. Сравнить и вывести какая из гипотенуз больше, а какая меньше.

2. Преобразовать строку так, чтобы буквы каждого слова в ней были отсортированы по алфавиту. 

 

Вариант 4.

1. Даны две дроби A/B и C/D (А, В, С, D — натуральные числа). Составить программу деления дроби на дробь. Ответ должен быть несократимой дробью. Использовать подпрограмму алгоритма Евклида для определения НОД.

2. Задана окружность (x-a)2 + (y-b)2 = R2 и точки Р(р1, р2), F(f1, f1), L(l1,l2). Выяснить и вывести на экран, сколько точек лежит внутри окружности. Проверку, лежит ли точка внутри окружности, оформить в виде процедуры.

 

Вариант 5.

1. Даны две дроби A/B и C/D (А, В, С, D — натуральные числа). Составить программу вычитания из первой дроби второй. Ответ должен быть несократимой дробью. Использовать подпрограмму алгоритма Евклида для определения НОД.

2. Напишите программу, которая выводит в одну строчку все делители переданного ей числа, разделяя их пробелами.

 

Вариант 6.

1. Составить программу нахождения наибольшего общего делителя (НОД) и наименьшего общего кратного (НОК) двух натуральных чисел НОК(А, В) = (A*B)/НОД(A,B). Использовать подпрограмму алгоритма Евклида для определения НОД.

2. Cоставить программу вычисления площади выпуклого четырехугольника, заданного длинами четырех сторон и диагонали.

 

Вариант 7.

1. Даны числа X, Y, Z, Т — длины сторон четырехугольника. Вычислить его площадь, если угол между сторонами длиной X и У — прямой. Использовать две подпрограммы для вычисления площадей: прямоугольного треугольника и прямоугольника.

2. Напишите программу, которая переводит переданное ей неотрицательное целое число в 10-значный восьмеричный код, сохранив лидирующие нули. 

Вариант 8.

1. Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр.

2. Ввести одномерный массив A длиной m. Поменять в нём местами первый и последний элементы. Длину массива и его элементы ввести с клавиатуры. В программе описать процедуру для замены элементов массива. Вывести исходные и полученные массивы.

Вариант 9.

1. Из заданного числа вычли сумму его цифр. Из результата вновь вычли сумму его цифр и т. д. Через сколько таких действий получится нуль?

2. Даны 3 различных массива целых чисел. В каждом массиве найти произведение элементов и среднеарифметическое значение.

Вариант 10.

1. На отрезке [100, N] (210 < N < 231) найти количество чисел, составленных из цифр а, b, с.

2. Составить программу, которая изменяет последовательность слов в строке на обратную.

 

Вариант 11.

1. Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, 41 и 43). Напечатать все пары «близнецов» из отрезка [n, 2n], где n — заданное натуральное число, большее 2.

2. Даны две матрицы А и В. Написать программу, меняющую местами максимальные элементы этих матриц. Нахождение максимального элемента матрицы оформить в виде процедуры.

 

Вариант 12.

1. Два натуральных числа называются «дружественными», если каждое из них равно сумме всех делителей (кроме его самого) другого (например, числа 220 и 284). Найти все пары «дружественных» чисел, которые не больше данного числа N.

2. Даны длины сторон треугольника a, b, c. Найти медианы треугольника, сторонами которого являются медианы исходного треугольника. Для вычисления медианы проведенной к стороне а, использовать формулу Вычисление медианы оформить в виде процедуры.

Вариант 13.

1. Натуральное число, в записи которого n цифр, называется числом Армстронга, если сумма его цифр, возведенная в степень n, равна самому числу. Найти все числа Армстронга от 1 до к.

2. Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой, минимальный. Вычисления оформить в виде процедуры.

Вариант 14.

1. Составить программу для нахождения чисел из интервала [М, N], имеющих наибольшее количество делителей.

2.Четыре точки заданы своими координатами X(x1, x2), Y(y1, y2), Z(z1, z2), P(p1, p2). Выяснить, какие из них находятся на максимальном расстоянии друг от друга и вывести на экран значение этого расстояния. Вычисление расстояния между двумя точками оформить в виде процедуры.

Вариант 15.

1. Найти все простые натуральные числа, не превосходящие n, двоичная запись которых представляет собой палиндром, т. е. читается одинаково слева направо и справа налево.

2. Четыре точки заданы своими координатами X(x1, x2, x3), Y(y1, y2, y3), Z(z1, z2, z3), T(t1,t2, t3). Выяснить, какие из них находятся на минимальном расстоянии друг от друга и вывести на экран значение этого расстояния. Вычисление расстояния между двумя точками оформить в виде процедуры.

 

 

 

Список литературы

1.     https://pythonworld.ru/tipy-dannyx-v-python/vse-o-funkciyax-i-ix-argumentax.html

2.     http://labs.org.ru/python-3/

3.     http://www.4stud.info/add-ons/define-a-function-in-python.html

4.     https://python-scripts.com/functions-python

 

 

 

 

 

 

 

Лабораторная работа 8. Работа с двумерными массивами (вложенные списки).

5.     Цель работы: изучение вложенных списков в Python.

 

знать - способ описания двумерного массива, способы ввода элементов двумерного массива;

уметь - вводить массивы, получать списки через присваивание конкретных значений, применять функции;

владеть -  основными навыками создания программ обработки двумерных массивов.

 

Матрицами называются массивы элементов, представленные в виде прямоугольных таблиц, для которых определены правила математических действий. Элементами матрицы могут являться числа, алгебраические символы или математические функции.


Для работы с матрицами в Python также используются списки. Каждый элемент списка-матрицы содержит вложенный список.

Таким образом, получается структура из вложенных списков, количество которых определяет количество столбцов матрицы, а число элементов внутри каждого вложенного списка указывает на количество строк в исходной матрице.

 

1. Создание списка

Пусть даны два числа: количество строк n и количество столбцов m. Необходимо создать список размером n×m, заполненный нулями.
Очевидное решение оказывается неверным:
A = [ [0] *m ]*n

В этом легко убедиться, если присвоить элементу A[0][0] значение 1, а потом вывести значение другого элемента A[1][0] — оно тоже будет равно 1! Дело в том, что [0] * m возвращает ccылку на список из m нулей. Но последующее повторение этого элемента создает список из n элементов, которые являются ссылкой на один и тот же список (точно так же, как выполнение операции B = A для списков не создает новый список), поэтому все строки результирующего списка на самом деле являются одной и той же строкой.

Таким образом, двумерный список нельзя создавать при помощи операции повторения одной строки.

Первый способ.

Сначала создадим список из n элементов (для начала просто из n нулей). Затем сделаем каждый элемент списка ссылкой на другой одномерный список из m элементов:

A = [0] * n
for i in range(n):
    A[i] = [0] * m

https://sites.google.com/site/moiboarkin/_/rsrc/1547730065250/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod1.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547730085561/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod1_res.png


Второй способ.

Создать пустой список, потом n раз добавить в него новый элемент, являющийся списком-строкой:

A = []
for i in range(n):
    A.append([0] * m)

https://sites.google.com/site/moiboarkin/_/rsrc/1547730906914/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod2.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547730927754/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod2_res.png

2. Ввод вложенного списка (двумерного массива)

Пример:

n=5
A = []
for i in range(n):
    b = input()
        for i in range(len(row)):
            row[i] = int(row[i])

A.append(row)

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547693456297/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex1_array.png

 

3. Вывод вложенного списка (двумерного массива)

Для обработки и вывода списка как правило используется два вложенных цикла. Первый цикл по номеру строки, второй цикл по элементам внутри строки. Например, вывести двумерный числовой список на экран построчно, разделяя числа пробелами внутри одной строки, можно так:

for i in range(n):
    for j in range(n]):
        print(A[i][j], end = ' ')
    print()

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547693694345/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex2_array.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547693732703/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex2_array_res.png

 

То же самое, но циклы не по индексу, а по значениям списка:

for row in A:
    for elem in row:
        print(elem, end = ' ')
    print()

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547731217019/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod3_res.png

 

Для вывода одной строки можно воспользоваться методом join. Использовав этот метод в цикле for можно

for row in A:

    print(' '.join(list(map(str, row))))

 

 

4. Обработка и вывод вложенных списков

Часто в задачах приходится хранить прямоугольные таблицы с данными. Такие таблицы называются матрицами или двумерными массивами. В языке программирования Питон таблицу можно представить в виде списка строк, каждый элемент которого является в свою очередь списком, например, чисел. Например, создать числовую таблицу из двух строк и трех столбцов можно так:

A = [ [1, 2, 3], [4, 5, 6] ]

Здесь первая строка списка A[0] является списком из чисел [1, 2, 3]. 

То есть

A[0][0]= 1, 

A[0][1]= 2,

A[0][2]= 3,

A[1][0]=4,

A[1][1]=5,

A[1][2]=6.

Используем два вложенных цикла для подсчета суммы всех чисел в списке:

S = 0
for i in range(len(A)):
    for j in range(len(A[i])):
        S += A[i][j]

Или то же самое с циклом не по индексу, а по значениям строк:

S = 0
for row in A:
    for elem in row:
        S += elem

https://sites.google.com/site/moiboarkin/_/rsrc/1547696223216/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog_1.png


https://sites.google.com/site/moiboarkin/_/rsrc/1547696240490/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog_1_res.png


5. Пример сложной обработки массива


Пусть дана квадратная матрица из n строк и n столбцов. Необходимо элементам, находящимся на главной диагонали, проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j], для которых i==j) присвоить значение 0, элементам, находящимся выше главной диагонали – значение 1, элементам, находящимся ниже главной диагонали – значение 2. То есть получить такой массив (пример для n==3):

     0 1 1 
     2 0 1 
     2 2 0 

 


Рассмотрим несколько способов решения этой задачи. 

Первый способ.

Элементы, которые лежат выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j. Таким образом, мы можем сравнивать значения i и j и по ним определять значение A[i][j]. Получаем следующий алгоритм:

for i in range(n):
    for j in range(n):
        if i < j:
            A[i][j] = 0
        elif i > j:
            A[i][j] = 2
        else:
            A[i][j] = 1

Ниже приведён пример программы, в котором квадратная матрица 3х3 заполняется элементами со значением 9, а затем элементам, находящимся на главной диагонали, проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j], для которых i==j) присваивается значение 0, элементам, находящимся выше главной диагонали – значение 1, элементам, находящимся ниже главной диагонали – значение 2. 

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547735119767/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog1.png

 

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547735139778/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog1_res.png

 

Второй способ.
Данный алгоритм плох, поскольку выполняет одну или две инструкции if для обработки каждого элемента. Если мы усложним алгоритм, то мы сможем обойтись вообще без условных инструкций.

Сначала заполним главную диагональ, для чего нам понадобится один цикл:

for i in range(n):
    A[i][i] = 1

Затем заполним значением 0 все элементы выше главной диагонали, для чего нам понадобится в каждой из строк с номером i присвоить значение элементам A[i][j] для j=i+1, ..., n-1. Здесь нам понадобятся вложенные циклы:

for i in range(n):
    for j in range(i + 1, n):
        A[i][j] = 0

Аналогично присваиваем значение 2 элементам A[i][j] для j=0, ..., i-1:

for i in range(n):
    for j in range(0, i):
        A[i][j] = 2

Можно также внешние циклы объединить в один и получить еще одно, более компактное решение:

for i in range(n):
    for j in range(0, i):
        A[i][j] = 2
    A[i][i] = 1
    for j in range(i + 1, n):
        A[i][j] = 0

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547736130947/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog2.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547735139778/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog1_res.png

 

Третий способ.
А вот такое решение использует операцию повторения списков для построения очередной строки списка. i-я строка списка состоит из i чисел 2, затем идет одно число 1, затем идет n-i-1 число 0:

for i in range(n):
    A[i] = [2] * i + [1] + [0] * (n - i - 1)

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547736294658/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog3.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547735139778/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog1_res.png

 

 

Вариант 0

1. Дан двумерный массив размером 3x3. Определить максимальное значение среди элементов третьего столбца массива; максимальное значение среди элементов второй строки массива. Вывести полученные значения.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547607087316/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_var0_1.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547607113773/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_var0_1_res.png

 

2. Дан двумерный массив размером mxn. Сформировать новый массив заменив положительные элементы единицами, а отрицательные нулями. Вывести оба массива.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547781751903/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_var0_2.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547609171150/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_var0_2_res.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вариант 1.

1. Вычислить сумму и число положительных элементов матрицы A[N, N], находящихся над главной диагональю.

2. Дана матрица B[N, М]. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их с первым и последним элементами строки соответственно.

Вариант 2.

1. Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т. е. такой матрицей, в которой суммы элементов во всех строках и столбцах одинаковы.

2. Дана прямоугольная матрица A[N, N]. Переставить первый и последний столбцы местами и вывести на экран.

Вариант 3.

1. Определить, является ли заданная целая квадратная матрица n-го порядка симметричной (относительно главной диагонали).

2. Дана вещественная матрица размером n х m. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в верхнем левом углу.

Вариант 4.

1. Дана прямоугольная матрица. Найти строку с наибольшей и строку с наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов.

2. Дана квадратная матрица A[N, N], Записать на место отрицательных элементов матрицы нули, а на место положительных — единицы. Вывести на печать нижнюю треугольную матрицу в общепринятом виде.

Вариант 5.

1. Упорядочить по возрастанию элементы каждой строки матрицы размером n х m.

2. Дана действительная матрица размером n х m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением. Если число четное, то заменяется нулем, нечетное - единицей. Вывести на экран новую матрицу.

Вариант 6.

1. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и в каждом столбце наименьший. Вывести на экран.

2. Дана действительная квадратная матрица порядка N (N — нечетное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.

Вариант 7.

1. Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать по строкам.

2. Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, просуммировав элементы одномерного массива. Преобразовать исходную матрицу по правилу: четные строки разделить на полученное значение, нечетные оставить без изменения.

Вариант 8.

1. Задана матрица порядка n и число к. Разделить элементы k-й строки на диагональный элемент, расположенный в этой строке.

2. Задана квадратная матрица. Получить транспонированную матрицу (перевернутую относительно главной диагонали) и вывести на экран.

Вариант 9.

1. Для целочисленной квадратной матрицы найти число элементов, кратных k, и наибольший из этих элементов.

2. В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент. Получить квадратную матрицу порядка n — 1 путем отбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен элемент с найденным значением.

Вариант 10.

1. Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены (либо по возрастанию, либо по убыванию).

2. Расположить столбцы матрицы D[M, N] в порядке возрастания элементов k-й строки (1 <= k <= М).

Вариант 11.

1. В данной действительной квадратной матрице порядка п найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

2. Среди столбцов заданной целочисленной матрицы, содержащих только такие элементы, которые по модулю не больше 10, найти столбец с минимальным произведением элементов и поменять местами с соседним.

Вариант 12.

1. Для заданной квадратной матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом.

2. Дана действительная матрица размером n х m. Требуется преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней.

Вариант 13.

1. Определить наименьший элемент каждой четной строки матрицы А[М, N].

2. Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами.

Вариант 14.

1. Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером m.

2. Составить программу, которая заполняет квадратную матрицу порядка п натуральными числами 1, 2, 3, ..., n2, записывая их в нее «по спирали». 

Например, для п = 5 получаем следующую матрицу: 

1 2 3 4 5 

16 17 18 19 6 

15 24 25 20 7 

14 23 22 21 8 

14 12 11 10 9

Вариант 15.

1. Определить номера строк матрицы R[M, N], хотя бы один элемент которых равен с, и элементы этих строк умножить на d.

2. Среди тех строк целочисленной матрицы, которые содержат только нечетные элементы, найти строку с максимальной суммой модулей элементов.

 Список литературы

1. https://pythontutor.ru/lessons/2d_arrays/

2. http://labs.org.ru/python-8/

3. http://progras.ru/31-dvumernye-spiski-massivy-matricy-v-python/

 

 

Встроенные функции

abs()

dict()

help()

min()

setattr()

all()

dir()

hex()

next()

slice()

any()

divmod()

id()

object()

sorted()

ascii()

enumerate()

input()

oct()

staticmethod()

bin()

eval()

int()

open()

str()

bool()

exec()

isinstance()

ord()

sum()

bytearray()

filter()

issubclass()

pow()

super()

bytes()

float()

iter()

print()

tuple()

callable()

format()

len()

property()

type()

chr()

frozenset()

list()

range()

vars()

classmethod()

getattr()

locals()

repr()

zip()

compile()

globals()

map()

reversed()

__import__()

complex()

hasattr()

max()

round()

 

delattr()

hash()

memoryview()

set()

 

abs(x)

Возвращает абсолютное значение числа. Аргумент может быть целым или числом с плавающей точкой. Если аргумент является комплексном числом, возвращается его величина.

all(iterable)

Возвращает True, если все элементы iterable возвращают правду (или если итерируемый объект пуст). Эквивалентно к:

def all(iterable):

    for element in iterable:

        if not element:

            return False

    return True

any(iterable)

Возвращает True, если какой-нибудь элемент iterable возвращает истину. Если итерируемый объект пуст, возвращается False. Эквивалентно к:

def any(iterable):

    for element in iterable:

        if element:

            return True

    return False

ascii(object)

Как repr() возвращает строку, содержащую представление объекта для печати, но избегая не-ASCII символов в строке, возвращаемых repr(), используя \x\u или \U выходы. Это создает строку, подобную той, что возвращает repr() в Python 2.

bin(x)

Преобразует целое число в двоичную строку, имеющую префикс '0b'. Результатом является допустимое выражение Python. Если x не является Python-объектом int, он должен определить метод __index__() (docs.python.org/3/reference/datamodel.html#object.__index__), который возвращает целое. Несколько примеров:

>>> bin(3)

'0b11'

>>> bin(-10)

'-0b1010'

В зависимости от того, требуется префикс '0b' или нет, вы можете использовать любой из следующих способов.

>>> format(14, '#b'), format(14, 'b')

('0b1110', '1110')

>>> f'{14:#b}', f'{14:b}'

('0b1110', '1110')

См. также format() для большей информации.

class bool([x])

Возвращает значение Boolean (логический, или двоичный, тип данных - прим. пер.), т. е. True или Falsex преобразуется с помощью стандартной процедуры тестирования истины. Если x является ложью или пропущен (вызов без аргумента - прим. пер.), то возвращается False; в противном случае возвращается True. Класс bool - это подкласс int (см. Числовые типы - int, float, complex). От него нельзя образовывать подклассы дальше. Единственные его экземпляры - это False и True (см. Булевы значения).

class bytearray([source[, encoding[, errors]]])

Возвращает новый массив байтов. Класс bytearray представляет собой изменяемую последовательность целых чисел в диапазоне 0 <= x < 256. У нее есть большинство обычных методов изменяемых последовательностей, описанных в Изменяемые типы последовательностей, а также большинства методов, которые имеет тип bytes, см. Операции Bytes и Bytearray.

Необязательный параметр source можно использовать для инициализации массива несколькими различными способами:

Без аргумента создается массив размером 0.

См. также Типы бинарных последовательностей - bytes, bytearray, memoryview и Объекты Bytearray.

class bytes([source[, encoding[, errors]]])

Возвращает новый объект “bytes”, который является неизменной последовательностью целых чисел в диапазоне 0 <= x < 256. bytes - это неизменяемая версия bytearray - она имеет те же неизменяющие методы и такую же индексацию и взятие срезов.

Соответственно, аргументы конструктора интерпретируются также как для bytearray().

Объекты bytes также могут быть созданы с литералов, см. String and Bytes literals (docs.python.org/3/reference/lexical_analysis.html#strings).

См. также Типы бинарных последовательностей - bytes, bytearray, memoryviewОбъекты Bytes и Операции Bytes и Bytearray.

callable(object)

Возвращает True, если аргумент object является вызываемым, False, если нет. Если возвращается истина, все еще возможно, что вызов не удастся, но если это ложь, вызов object никогда не удастся. Обратите внимание, что классы вызываемы (вызов класс возвращает новый экземпляр); экземпляры вызываемы, если их класс имеет метод __call__() (docs.python.org/3/reference/datamodel.html#object.__call__).

Новое в версии 3.2: Эта функция была сначала удалена из Python 3.0, а затем занесена обратно в Python 3.2.

chr(i)

Возвращает строку, представляющую символ, чей код Юникода является целым числом i. Например, chr(97) возвращает строку 'a', в то время как chr(8364) вернет строку '€'  Эта функция является противоположной для ord().

Допустимый диапазон для аргумента: от 0 до 1,114,111 (0x10FFFF по основанию 16). Будет возбуждаться ValueError, если i выходит за эти пределы.

classmethod(function)

Возвращает метод класса для function.

Метод класса получает класс как неявный первый аргумент, также как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте эту идиому:

class C:

    @classmethod

    def f(cls, arg1, arg2, ...): ...

Форма @classmethod является декоратором (docs.python.org/3/glossary.html#term-decorator) функции - для дополнительной информации см. описание определений функций в Function definitions (docs.python.org/3/reference/compound_stmts.html#function).

Функцию можно вызвать либо на класс (как C.f()), либо на экземпляр (как C().f()). Экземпляр игнорируется за исключением его класса. Если метод класса вызывается для производного класса, объект производного класса передается как предполагаемый первый аргумент.

Методы класса отличаются от статических методов C++ или Java. Если вам необходимо подобное, см. staticmethod() в этом разделе.

Для получения более подробной информации о методах класса, обратитесь к документации по стандартной иерархии типов в The standard type hierarchy (docs.python.org/3/reference/datamodel.html#types).

compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

Компиляция source в код или объект AST. Кодовые объекты могут быть выполнены exec() или eval()source может быть либо обычной строкой, либо строкой байтов или объектом AST. Обратитесь к документации модуля ast (docs.python.org/3/library/ast.html#module-ast) для получения информации о том, как работать с объектами AST.

Аргумент filename должен передать файл, из которого читается код; передается некоторое распознаваемое значение, если не было чтения из файла (обычно используется '<string>').

Аргумент mode определяет, какой код должен быть скомпилирован; это может быть 'exec', если source состоит из последовательности операторов,'eval', если состоит из одного выражения, или 'single', если он состоит из одного интерактивного оператора (в последнем случае операторы выражения, которые расцениваются как что-то другое, чем None, будут напечатаны).

Необязательные аргументы flags и dont_inherit управляют будущими операторами (см. PEP 236 (www.python.org/dev/peps/pep-0236)), влияющими на компиляцию source. Если их нет (или оба равны нулю) код компилируется с теми будущими операторами, которые в действительности в коде, который вызывает compile(). Если аргумент flags задан, а dont_inherit нет (или равен нулю), то будущие операторы, указанные в аргументе flags используются в дополнение к тем, которые использовались бы в любом случае. Если dont_inherit является ненулевым целым, то аргумент flags - будущие операторы в действительности вокруг вызова компиляции игнорируются.

Будущие операторы задаются битами, которые могут быть побитово ORed вместе для задания нескольких операторов. Логическое поле необходимое к указанию переданной функции можно найти как атрибут compiler_flag экземпляра _Feature в модуле __future__ (docs.python.org/3/library/__future__.html#module-__future__).

Аргумент optimize определяет уровень оптимизации компилятора; значение по умолчанию -1 выбирает уровень оптимизации интерпретатора как заданный опцией -O (docs.python.org/3/using/cmdline.html#cmdoption-O). Явные уровни 0 (нет оптимизация; __debug__ есть true), 1 (утверждения удаляются, __debug__ есть false) или 2 (строки документации удаляются также).

Эта функция возбуждает SyntaxError (docs.python.org/3/library/exceptions.html#SyntaxError), если компилируемый код содержит ошибки, и ValueError (docs.python.org/3/library/exceptions.html#ValueError), если код содержит несуществующие (null) байты.

Если вы хотите парсить код Python в его предтавление AST, см. ast.parse() (docs.python.org/3/library/ast.html#ast.parse).

Примечание. Когда компилируется строка с многострочным кодом в режимах 'single' или 'eval', ввод должен быть завершен по крайней мере одним символом новой строки. Это необходимо для облегчения обнаружения неполных и полных выражений в модуле code (docs.python.org/3/library/code.html#module-code).

Изменено в версии 3.2: Разрешено использование новой строки Windows и Mac. Также ввод в режиме 'exec' не должен больше заканчиваться символом новой строки. Добавлен параметр optimize.

Изменено в версии 3.5: Ранее возбуждалось TypeError (docs.python.org/3/library/exceptions.html#TypeError), когда в sourse встречались несуществующие байты.

class complex([real[, imag]])

Возвращает комплексное число со значением real + imag*1j или преобразовывает строку или число в комплексное число. Если первый параметр является строкой, она будет интерпретирована как комплексное число, и функция должна быть вызвана без второго параметра. Второй параметр никогда не может быть строкой. Каждый аргумент может быть любым числовым типом (в том числе комплексным). Если imag опущен, то по умолчанию равен нулю, и конструктор работает как числовое преобразование подобно int() и float(). Если оба аргумента опущены, возвращается 0j.

Примечание: При преобразовании из строки, она не должна содержать пробелы вокруг центрального оператора + или -. Напримерcomplex('1+2j') правильно, но complex('1 + 2j') вызовет ValueError (docs.python.org/3/library/exceptions.html#ValueError).

Комплексный тип описан в Числовые типы — int, float, complex.

Изменено в версии 3.6: Допускается группировка цифр с символами подчеркивания, как в литералах кода.

delattr(object, name)

Родственный с setattr(). Аргументы являются объектом и строкой. Строка должна быть именем одного из атрибутов объекта. Функция удаляет названный атрибут, если предоставленный объект это позволяет. Например, delattr(x, 'foobar') эквивалентно del x.foobar.

class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)

Создает новый словарь. Объект dict является классом словаря. См. dict и Типы отображений — dict для получения сведений об этом классе.

Для других контейнеров см. встроенные классы listset и tuple, также как модуль collections (docs.python.org/3/library/collections.html#module-collections).

dir([object])

Без аргументов возвращает список имен в текущем локальной области видимости. С аргументом пытаться вернуть список допустимых атрибутов для указанного объекта.

Если у объекта есть метод с именем __dir__() (docs.python.org/3/reference/datamodel.html#object.__dir__), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, которые реализуют обычные функции __getattr__() (docs.python.org/3/reference/datamodel.html#object.__getattr__) или __getattribute__() (docs.python.org/3/reference/datamodel.html#object.__getattribute__), настроить способ, каким dir() будет представлять их атрибуты.

Если объект не предоставляет __dir__(), функция пытается сделать все возможное, чтобы собрать информацию из атрибута объекта __dict__, если он определен, и от его типа объекта. Результирующий список не обязательно является полным и может быть неточным по-сравнению с тем, когда у объекта есть __getattr__().

По умолчанию механизм dir() ведет себя по-разному с различными типами объектов, так как он пытается произвести наиболее актуальную, а не полную информацию:

Результирующий список отсортирован в алфавитном порядке. Например:

>>> import struct

>>> dir()   # показывает имена в пространстве имен модуля

['__builtins__', '__name__', 'struct']

>>> dir(struct)   # показывает имена в модуле struct

['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',

 '__initializing__', '__loader__', '__name__', '__package__',

 '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',

 'unpack', 'unpack_from']

>>> class Shape:

...     def __dir__(self):

...         return ['area', 'perimeter', 'location']

>>> s = Shape()

>>> dir(s)

['area', 'location', 'perimeter']

Примечание. Поскольку dir() предоставляется в основном как удобство для использования в интерактивном режиме, он пытается предоставить интересующий набор имен в большей степени, чем пытается поставить строго или последовательно определенный набор имен, и его подробное поведение может измениться через релизы. Например, атрибутов метакласса нет в списке результатов, когда аргумент является классом.

divmod(a, b)

Принимает два (не комплексных) числа в качестве аргументов и возвращает пару чисел, составляющих их частное и остаток, когда используется целочисленного деление. Если операнды разных типов, применяются правила для бинарных арифметических операторов. Для целых чисел результат будет таким же, как (a // b, a % b). Для вещественных чисел результат есть (q, a % b), где q обычно math.floor(a / b), но может быть 1 меньше, чем то. В любом случае q * b + a % b очень близко к a, если a % b не равна нулю, то имеет тот же знак, что и b0 <= abs(a % b) < abs(b).

enumerate(iterablestart=0)

Возвращает перечисляемый объект. iterable должен быть последовательностью, iterator (docs.python.org/3/glossary.html#term-iterator) или другим объектом с поддержкой итераций. Метод __next__() итератора, возвращаемого enumerate(), возвращает кортеж, содержащий счетчик (start которого по умолчанию 0) и значения, полученные из перебора по iterable.

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']

>>> list(enumerate(seasons))

[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

>>> list(enumerate(seasons, start=1))

[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

Эквивалентно:

def enumerate(sequence, start=0):

    n = start

    for elem in sequence:

        yield n, elem

        n += 1

eval(expression, globals=None, locals=None)

Аргументы - это строка и необязательные globals и locals. При наличии, globals должен быть словарем. Если предоставлен, locals может быть любым объектом отображения (mapping).

Аргумент expression анализируется и оценивается как выражение Python (с технической точки зрения, список условий), использующее globals и locals словари как глобальные и локальные пространства имен. Если словарь globals присутствует и не хватает '__builtins__', текущие глобальные копируются в globals перед тем, как анализируется expression. Это означает, что expression обычно имеет полный доступ к стандартному модулю builtins (docs.python.org/3/library/builtins.html#module-builtins) и распространяются ограничения окружения. Если словарь locals опущен, по умолчанию используется словарь globals. Если оба словаря опущены, выражение выполняется в среде, где вызывается eval(). Возвращаемое значение является результатом вычисляемого выражения. Синтаксические ошибки сообщаются как исключения. Пример:

>>> x = 1

>>> eval('x+1')

2

Эта функция также может быть использована для выполнения произвольных кодов-объектов (например, тех, которые созданы compile()). В этом случае передается объект кода вместо строки. Если объект-код был скомпилирован с 'exec' как аргумент mode, возвращаемое значение eval() будет None.

Советы: динамическое исполнение операторов поддерживается функцией exec(). Функции globals() и locals() возвращают текущие глобальные и локальные словари соответственно, которые могут быть полезны к распространению для использования eval() или exec().

См. ast.literal_eval() (docs.python.org/3/library/ast.html#ast.literal_eval) для функции, которая может безопасно оценить строки с выражениями, содержащими только литералы.

exec(object[, globals[, locals]])

Эта функция поддерживает динамическое выполнение Python-кода. object должен быть строкой или кодовым объектом. Если это строка, она обрабатывается как набор операторов Python, которые затем выполняются (если только не происходит ошибка синтаксиса). [1] Если это объект-код, он просто выполняется. Во всех случаях код, который выполняется, как предполагается будет действителен в качестве входных файлов (см раздел "File input" в справочном руководстве). Знайте, что операторы return и yield не могут быть использованы за пределами определений функций даже в контексте кода переданного функции exec(). Возвращаемое значение None.

Во всех случаях если дополнительные части опущены, код выполняется в текущей области видимости. Если предоставляется только globals, это должен быть словарь, который будет использоваться как для глобальных так и локальных переменных. Если даны globals и locals, они используются для глобальных и локальных переменных соответственно. Если задан, locals может быть любым объектом-отображением (mapping object). Помните, что на уровне модуля, глобальные и локальные - один и тот же словарь. Если exec получает два отдельных объекта как globals и locals, код будет выполняться, как будто они были встроены в определение класса.

Если словарь globals не содержит значение для ключа __builtins__, ссылка на словарь из встроенного модуля builtins (docs.python.org/3/library/builtins.html#module-builtins) вставляется под этим ключом. Таким образом вы можете контролировать то, что встроенные функции доступны для исполняемого кода, вставив свой ​​собственный словарь __builtins__ в globals, прежде чем передать его exec().

Примечание: Встроенные функцие globals() и locals() возвращают текущие глобальный и локальный словари соответственно, которые могут быть полезны для раздачи использования в качестве второго и третьего аргумента exec().

Примечание: По умолчанию locals действует, как описано для функции locals() ниже: изменения в словаре по умолчанию locals не должно быть предпринято. Передается явный словарь locals, если вам нужно увидеть эффекты кода на locals после возврата из функции exec().

filter(function, iterable)

Строит итератор из тех элементов iterable, для которых function возвращает true. iterable может быть либо последовательностью, контейнером, который поддерживает итерацию, либо итератором. Если function есть None, предполагается идентичная функция, то есть все элементы iterable, которые являются false, удаляются.

Обратите внимание, что filter(function, iterable) есть эквивалент выражению-генератору (item for item in iterable if function(item)), если функция не None и (item for item in iterable if item), если функция является None.

См. itertools.filterfalse() (docs.python.org/3/library/itertools.html#itertools.filterfalse) для дополнительной функции, которая возвращает элементы iterable, для которых function возвращает false.

class float([x])

Возвращает число с плавающей точкой, созданное из числа или строки x.

Если аргумент является строкой, он должен содержать десятичное число с необязательным предшествующим знаком, и необязательным вставленным в эту строку пробелом. Необязательный знак может быть '+' или '-'; знак '+' не оказывает никакого эффекта на получаемое значение. Аргумент может также быть строкой, представляющей NaN (not-a-number), или положительной или отрицательной бесконечностью. Более точно, ввод должен соответствовать следующей грамматике после того, как начальные и конечные пробельные символы будут удалены:

sign           ::=  "+" | "-"

infinity       ::=  "Infinity" | "inf"

nan            ::=  "nan"

numeric_value  ::=  floatnumber | infinity | nan

numeric_string ::=  [sign] numeric_value

Здесь floatnumber является формой литерала с плавающей точкой в Python, описанный в Floating point literals (docs.python.org/3/reference/lexical_analysis.html#floating). Регистр не имеет значения, так, например, “inf”, “Inf”, “INFINITY” и “iNfINity” - все приемлемые варианты написания для положительной бесконечности.

В ином случае, если аргумент является целым числом или числом с плавающей точкой, возвращается число с плавающей точкой с тем же значением (в пределах точности числа с плавающей точкой в Python). Если аргумент находится вне диапазона float в Python, будет возбуждено OverflowError (docs.python.org/3/library/exceptions.html#OverflowError).

Для общего объекта Python x float(x) представляется в x.__float__().

Если аргумент не задан, то возвращается 0.0.

Примеры:

>>> float('+1.23')

1.23

>>> float('   -12345\n')

-12345.0

>>> float('1e-003')

0.001

>>> float('+1E6')

1000000.0

>>> float('-Infinity')

-inf

Тип float описан в Числовые типы — int, float, complex.

Изменено в версии 3.6: позволена группировка цифр с помощью нижнего подчеркивания как в кодовых литералах.

format(value[, format_spec])

Преобразует value к "отформатированному" представлению, как контролируется format_spec. Интерпретация format_spec будет зависеть от типа аргумента value, однако есть стандартный синтаксис форматирования, который используется большинством встроенных типов: Format Specification Mini-Language (docs.python.org/3/library/string.html#formatspec).

По умолчанию format_spec - это пустая строка, которая обычно дает тот же эффект, что и вызов str(value) (docs.python.org/3/library/stdtypes.html#str).

Вызов format(value, format_spec) переводится в type(value).__format__(format_spec), который обходит словарь экземпляра при поиске значения метода __format__() (docs.python.org/3/reference/datamodel.html#object.__format__). Возникает исключение TypeError (docs.python.org/3/library/exceptions.html#TypeError), если поиск метода достигает object и format_spec не пустой, или если либо format_spec, либо возвращаемое значение не являются строками.

Изменено в версии 3.4: object().__format__(format_spec) возбуждает TypeError, если format_spec не пустая строка.

class frozenset([iterable])

Возвращает новый объект frozenset, опционально с элементами, взятыми из iterablefrozenset является встроенным классом. Смотрите frozenset и Типы множеств — set, frozenset для обзора документации по этому классу.

Для других контейнеров смотрите встроенные классы set, list, tuple и dict, а также модуль collections (docs.python.org/3/library/collections.html#module-collections).

getattr(object, name[, default])

Возвращает значение атрибута object с указанным именем. name должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом является значение этого атрибута. Например, getattr(x, 'foobar') эквивалентна x.foobar. Если названный атрибут не существует, то возвращается то, что задано по умолчанию, если предусмотрено, в противном случае возбуждается AttributeError (docs.python.org/3/library/exceptions.html#AttributeError).

globals()

Возвращает словарь, представляющий текущую глобальную таблицу обозначений. Это всегда словарь текущего модуля (внутри функции или метода, это модуль, где она определена, не модуль, из которого она вызывается).

hasattr(object, name)

Аргументами являются объект и строка. Результат истина, если строка является именем одного из атрибутов объекта, ложь, если нет. (Это реализуется путем вызова getattr(object, name) и обзора, возбуждает ли он AttributeError или нет.)

hash(object)

Возвращает хэш-значение объекта (если он есть). Хэш-значения являются целыми числами. Они используются для быстрого сравнения ключей словаря во время просмотра словаря. Числовые значения, которые сравнивают, равны, если имеют одинаковое значение хеш (даже если они имеют разные типы, как это имеет место для 1 и 1,0).

Примечание. Для объекта с пользовательскими методами __hash__(), обратите внимание, что hash() обрезает возвращаемое значение на основе битовой ширины хост-машины. Смотрите __hash__()  (docs.python.org/3/reference/datamodel.html#object.__hash__) для получения подробной информации.

help([object])

Вызывает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не задан, интерактивная справочная система запускает консольную справку. Если аргумент является строкой, то строка рассматривается как имя модуля, функции, класса, метода, ключевое слово или тема документации, и справочной страница выводится в консоли. Если аргумент является любой другой вид объекта, генерируется страница помощи по объекту.

Эта функция добавлена к встроенному пространству имен модуля site (docs.python.org/3/library/site.html#module-site).

Изменено в версии 3.4: Изменения в pydoc (docs.python.org/3/library/pydoc.html#module-pydoc) и inspect (docs.python.org/3/library/inspect.html#module-inspect) означают, что сообщаемые подписи для вызываемых объектов в настоящее время более полный и последовательный.

hex(x)

Преобразует целое число в строчное шестнадцатеричное представление с префиксом “0x”, например:

>>> hex(255)

'0xff'

>>> hex(-42)

'-0x2a'

Если x не является объектом int Python, у него должен быть определен метод __index__(), возвращающий целое.

Смотрите также int() для преобразования шестнадцатеричной строки в целое, используя основание 16.

Примечание. Для получения строки шестнадцатеричного представления вещественного числа используйте метод float.hex().

id(object)

Возвращает "индивидуальность" объекта. Это целое число, которое гарантированно будет уникальным и постоянным для этого объекта во время его жизни. Два объекта с неперекрывающимся временем жизни могут иметь одинаковые значения id().

Детали реализации CPython: Это адрес объекта в памяти.

input([prompt])

Если аргумент prompt присутствует, он пишется в стандартный вывод без последующего символа новой строки. Затем функция считывает строку из ввода, преобразует ее в строковый тип данных (удаляя символ конца строки) и возвращает результат. Когда считывается EOF, возбуждается EOFError (docs.python.org/3/library/exceptions.html#EOFError). Пример:

>>> s = input('--> ') 

--> Monty Python's Flying Circus

>>> s 

"Monty Python's Flying Circus"

Если был загружен модуль readline (docs.python.org/3/library/readline.html#module-readline), то input() будет использовать его для предоставления сложного редактирования строки и возможностей истории.

class int(x=0)
class int(x, base=10)

Возвращает целочисленный объект, созданный из числа или строки x, или возвращает 0, если аргументы не заданы. Если x является числом, возвращает x.__int__() (docs.python.org/3/reference/datamodel.html#object.__int__). У вещественных чисел удаляется дробная часть.

Если x не число или если задано base, то x должен быть строкой, байтами, или экземпляром bytearray, представляющим литерал целого числа (docs.python.org/3/reference/lexical_analysis.html#integers) по основанию base. Литералу может предшествовать + или - (без пробела между ними) и окруженный пробелами. Литерал по основанию n состоит из цифр от 0 до n-1, включая от a до z (или от A до Z), имеющих значения от 10 до 35. По умолчанию base равно 10. Допустимые значения 0 и 2-36. Основания -2, -8, и -16 могут иметь необязательные префиксы 0b/0B0o/0O или 0x/0X, как с целочисленными литералами в коде. Основание 0 означает точно интерпретировать как кодовый литерал, так что фактическое основание 2, 8, 10 или 16, и так что int('010', 0) не является правильным, в то время как int('010') верно, а также int('010', 8).

Целочисленный тип описан в Числовые типы — int, float, complex.

Изменено в версии 3.4: Если base не является экземпляром int и объект base имеет метод base.__index__ (docs.python.org/3/reference/datamodel.html#object.__index__), то этот метод вызывается для получения целого для base. В предыдущих версиях использовали base.__int__ (docs.python.org/3/reference/datamodel.html#object.__int__) вместо base.__index__.

Изменения в версии 3.6: Как в кодовых литералах позволено группировать цифры с помощью символов нижнего подчеркивания.

isinstance(object, classinfo)

Возвращает правду, если аргумент object является экземпляром аргумента classinfo, или (прямым, косвенным или виртуальным (docs.python.org/3/glossary.html#term-abstract-base-class)) подклассом от него. Если object не является объектом данного типа, функция всегда возвращает ложь. Если classinfo не является классом (тип объекта), это может быть кортеж объектов типа, или может рекурсивно содержать другие такие кортежи (другие типы последовательностей не принимаются). Если classinfo не является типом или кортежем типов и подобных кортежей, возбуждается исключение TypeError (docs.python.org/3/library/exceptions.html#TypeError).

issubclass(class, classinfo)

Возвращает правду, если class является подклассом (прямым, косвенным или виртуальным) от classinfo. Класс считается подклассом самого себя. classinfo может быть кортеж из объектов классов, и в этом случае каждая запись в classinfo будут проверена. В любом другом случае, возбуждается исключение TypeError.

iter(object[, sentinel])

Возвращает объект iterator (docs.python.org/3/glossary.html#term-iterator). Первый аргумент интерпретируется по-разному в зависимости от наличия второго аргумента. Без второго аргумента, object должен быть объектом-коллекцией, которая поддерживает протокол итераций (метод __iter__()), или он должен поддерживать протокол последовательности (метод __getitem__() с целыми аргументами, начиная с 0). Если он не поддерживает любой из этих протоколов, возбуждается TypeError. Если второй аргумент, sentinel, передается, то object должен быть вызываемым объектом. В этом случае созданный итератор будем вызывать object без аргументов для каждого вызова его метода __next__(); если возвращенное значение равно sentinel, будет возбуждено StopIteration, иначе будет возвращено значение.

Смотри также Типы итераторов.

Один из вариантов применения второй формы iter() является чтение строк файла, пока не будет достигнута определенная линия. Следующий пример считывает до тех пор, пока метод readline() не возвращает пустую строку:

with open('mydata.txt') as fp:

    for line in iter(fp.readline, ''):

        process_line(line)

len(s)

Возвращает длину (число элементов) объекта. Аргумент может быть последовательностью (например, строка, байты, кортеж, список или диапазон) или коллекцией (например, словарь, множество или frozen множество).

class list([iterable])

Вместо того, чтобы быть функцией, list на самом деле является изменяемым типом последовательности, как описано в Lists и Типы последовательностей — list, tuple, range.

locals()

Обновляет и возвращает словарь, представляющий текущую локальную таблицу имен. Свободные переменные возвращаются locals(), когда она вызывается в блоках функций, но не в блоках классов.

Примечание: Содержимое этого словаря не должны быть изменено; изменения не могут повлиять на значения локальных и свободных переменных, используемых интерпретатором.

map(function, iterable, ...)

Возвращает итератор, который применяет function к каждому элементу из iterable, принося результаты. Если передаются дополнительные аргументы iterablefunction должна принять все множество аргументов и применится к элементам из всех параллельно. С несколькими итерируемыми итератор останавливается, когда самая короткая итерация исчерпана. Для случаев, когда входы функции уже расположены в аргументе кортежей см itertools.starmap() (docs.python.org/3/library/itertools.html#itertools.starmap).

max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])

Возвращает самый большой элемент в iterable или самый большой из двух или более аргументов.

Если предоставляется один позиционный аргумент, он должен быть iterable (docs.python.org/3/glossary.html#term-iterable). Возвращается наибольший элемент из итерации. Если передаются два или более позиционных аргументов, возвращается самый большой из них.

Есть два необязательных keyword-only (именованных - прим. пер.) аргумента. Аргумент key определяет одно-аргументную упорядочивающую функцию такую же, как используемую для list.sort(). Аргумент default определяет возвращаемый объект, если предоставленная итерация пуста. Если итерация пуста и default не предоставлен, возбуждается ValueError (docs.python.org/3/library/exceptions.html#ValueError).

Если множество элементов являются максимальными, функция возвращает первый, который попадается. Это совпадает с другими сохраняющими сортировку инструментами как sorted(iterable, key=keyfunc, reverse=True)[0] и heapq.nlargest(1, iterable, key=keyfunc).

Новое в версии 3.4: default keyword-only аргумент.

memoryview(obj)

Возвращает объект “memory view”, созданный из данного аргумента. Для детальной информации смMemory Views.

min(iterable, *[, key, default])
min(arg1, arg2, *args[, key])

Возвращает наименьший элемент в iterable или наименьший из двух или более аргументов.

Если предоставлен один позиционный аргумент, он должен быть iterable (docs.python.org/3/glossary.html#term-iterable). Если предоставляются два и более позиционных аргумента, возвращается наименьший позиционный аргумент.

Существует два необязательных keyword-only аргумента. Аргумент key определяет одно-аргументную порядковую функцию такую же, как используемую для list.sort(). Аргумент default определяет возвращаемый объект, если предоставленная итерация пуста. Если итерация пуста и default не предоставлен, возбуждается ValueError (docs.python.org/3/library/exceptions.html#ValueError).

Если не один элемент является минимальными, функция возвращает первый, который попадается. Это совпадает с другими сохраняющими сортировку инструментами как sorted(iterable, key=keyfunc)[0] и heapq.nsmallest(1, iterable, key=keyfunc).

Новое в версии 3.4: default keyword-only аргумент.

next(iterator[, default])

Извлекает следующий элемент из iterator, путем вызова его методом __next__(). Если дан default, то он возвращается, если итератор исчерпан, иначе возбуждается StopIteration (docs.python.org/3/library/exceptions.html#StopIteration).

class object

Возвращает новый безликий объект. object является основой для всех классов. У него есть методы, которые общие для всех экземпляров классов Python. Эта функция не принимает никакие аргументы.

Примечание: у object нет __dict__, таким образом вы не можете назначать произвольные атрибуты экземплярам класса object.

oct(x)

Обращает целое десятичное число в восьмеричное число в виде строки. Результатом является валидное выражение Python. Если x не является объектом int, он должен определить метод __index__() (docs.python.org/3/reference/datamodel.html#object.__index__), который возвращает целое десятичное число.

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

Открывает file и возвращает соответствующий file object (docs.python.org/3/glossary.html#term-file-object). Если файл не может быть открыт, то возбуждается OSError (docs.python.org/3/library/exceptions.html#OSError).

file - это path-like object (docs.python.org/3/glossary.html#term-path-like-object), задающий путь-имя (абсолютное или относительное к текущей рабочей директории) файла, который открыт, или числовой файловый дескриптор файла, который был обернут. (Если дан файловый дескриптор, он закрывается, когда возвращаемый объект I/O закрыт, до тех пор пока closefd не установлен в False.

mode является необязательной строкой, которая определяет режим, в котором файл открывается. По умолчанию это 'r', что обозначает открытие для чтения в текстовом режиме. Другое распространенное значение - это 'w' для записи (стирает содержимое файла, если он уже существует), 'x' для исключительного создания и 'a' для добавления (что на некоторых Unix-системах означает, что все записи добавляются в конец файла, несмотря на текущую позицию seek). В текстовом режиме если параметр encoding не указан, то использование кодирования зависит от платформы: вызывается locale.getpreferredencoding(False), чтобы получить текущую локальную кодировку. (Для чтения и написания необработанные байты используют бинарный режим или оставляют кодировку неопределенной.) Доступными режимами являются:

Символ

Значение

'r'

открывает для чтения (по умолчанию)

'w'

открывает для записи, сначала усекая файл

'x'

открывает исключительно для создания, терпит неудачу, если файл уже существует

'a'

открывает для записи, если файл уже существует, то для добавления в его конец

'b'

бинарный режим

't'

текстовый режим (по умолчанию)

'+'

открывает дисковый файл для обновления (чтения или записи)

'U'

режим universal newlines (docs.python.org/3/glossary.html#term-universal-newlines) (устаревший)

Режимом по умолчанию является 'r' (открывает для чтения текст, синоним 'rt'). Для доступа к бинарному чтению-записи режим 'w+b' открывает и усекает файл до 0 байтов. 'r+b' открывает файл без усечения.

Как уже упоминалось в Overview (docs.python.org/3/library/io.html#io-overview), Python делает различия между бинарным и текстовым вводом-выводом. Файлы, открытые в бинарном режиме (включающие 'b' в аргументе mode) возвращают содержимое как объекты bytes (docs.python.org/3/library/stdtypes.html#bytes) без какого-либо декодирования. В текстовом режиме (по умолчанию или когда 't' включено в аргумент mode) содержимое файла возвращается как str (docs.python.org/3/library/stdtypes.html#str), байты сначала декодируются, используя платформенно-зависимую кодировку или используя указанную кодировку, если она задана.

Замечание: Python не зависит от идеи текстовых файлов, лежащей в основе операционной системы; вся обработка выполняется Python'ом самостоятельно и является поэтому платформенно-независимой.

buffering есть необязательное целое число, которое используется для установки политики буферизации. Передайте 0 для выключения буферизации (позволено только в бинарном режиме), 1 для выбора строки буферизации и целое число > 1 для указания размера в байтах порции буфера фиксированного размера. Когда нет заданного аргумента buffering, по умолчанию политика буферизации работает следующим образом:

encoding есть название кодирования, используемого для декодирования или кодирования файла. Его следует использовать только в текстовом режиме. По умолчанию кодирование платформенно-зависимо (что бы ни вернул locale.getpreferredencoding() (docs.python.org/3/library/locale.html#locale.getpreferredencoding)), но любой
text encoding (docs.python.org/3/glossary.html#term-text-encoding), поддерживаемый Python, может быть использован. Смотрите модуль codecs (docs.python.org/3/library/codecs.html#module-codecs) для списка поддерживаемых кодировок.

errors - это необязательная строка, которая определяет, как ошибки кодирования и декодирования должны быть обработаны, она не может быть использовано в бинарном режиме. Разнообразие обработчиков стандартных ошибок доступно (перечислены в Error Handlers (docs.python.org/3/library/codecs.html#error-handlers)), хотя любое имя обрабатываемой ошибки, которая была зарегистрирована с codecs.register_error() (docs.python.org/3/library/codecs.html#codecs.register_error) также действительна. Стандартные имена включают:

newline контролирует, как работает режим universal newlines (docs.python.org/3/glossary.html#term-universal-newlines) (это применяется только к текстовому режиму). Это может быть None'''\n''\r' и '\r\n'. Это работает следующим образом:

Если closefd есть False и файловый дескриптор предпочтительней, чем заданное имя файла, лежащий в основе файловый дескриптор будет оставаться открытым, когда файл закрывается. Если имя файла дано, closefd должен быть True (по умолчанию), иначе будет возбуждена ошибка.

Пользовательский открыватель можно использовать, передавая вызываемый как opener. Лежащий в основе файловый дескриптор для файлового объекта есть затем полученный с вызывающим opener (fileflags). opener должен возвращать открытый файловый дескриптор (передающий os.open (docs.python.org/3/library/os.html#os.open) как результаты opener в функциональности похожей на передающийся None).

Вновь созданный файл является non-inheritable (docs.python.org/3/library/os.html#fd-inheritance).

Следующий пример использует параметр dir_fd (docs.python.org/3/library/os.html#dir-fd) функции os.open() (docs.python.org/3/library/os.html#os.open) для открытия файлового отношения к заданной директории.

>>> import os

>>> dir_fd = os.open('somedir', os.O_RDONLY)

>>> def opener(path, flags):

...     return os.open(path, flags, dir_fd=dir_fd)

...

>>> with open('spamspam.txt', 'w', opener=opener) as f:

...     print('This will be written to somedir/spamspam.txt', file=f)

...

>>> os.close(dir_fd)  # файловый дескриптор не просачивается

Тип file object (docs.python.org/3/glossary.html#term-file-object), возвращаемый функцией open(), зависит от режима. Когда open() используется для открытия файла в текстовом режиме ('w''r''wt''rt', т. д.), возвращается подкласс io.TextIOBase (а именно io.TextIOWrapper). Когда используется для открытия файл в бинарном режиме с буферизацией, возвращаемый класс есть подкласс io.BufferedIOBase. Точный класс изменяется: в режиме бинарного чтения возвращает io.BufferedReader; в режимах бинарной записи и добавления возвращает io.BufferedWriter, и в режиме чтения/записи возвращает io.BufferedRandom. Когда буферизация отключена, данные текут, подкласс io.RawIOBase, io.FileIO возвращается.

Смотри также модули обработчиков файла, такие как fileinput, io (где open() объявлена), os, os.path, tempfile и shutil.

Изменено в версии 3.3:

Изменено в версии 3.4:

Устаревший, начиная с версии 3.4, будет удален в версии 4.0: Режим 'U'.

Изменено в версии 3.5:

Изменено в версии 3.6:

ord(c)

Дается строка, представляющая один символ Unicode, возвращается целое число, представляющее код Unicode того символа. Например, ord('a') возвращает целое число 97, а ord('€') (знак евро) возвращает 8364. Эта функция обратна chr().

pow(x, y[, z])

Возвращает x в степени y; если z присутствует, возвращает x в степени y, по модулю z (вычисление более эффективно, чем pow(x, y) % z). Двухаргументная форма pow(x, y) - это эквивалент использования оператора степени: x**y.

Аргументы должны иметь числовые типы. Со смешанными типами операндов применяются правила принуждение для бинарных арифметических операторов. Для операндов int результат имеет такой же тип, как операнды (после принуждения), если второй аргумент не является отрицательным; в этом случае все аргументы конвертируются в float, и результат float предоставляется. Например, 10**2 возвращает 100, но 10**-2 возвращает 0.01. Если второй аргумент отрицательный, третий аргумент должен быть опущен. Если z представлен, x и y должны быть целочисленными типами, и y должен быть неотрицательным.

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

Выводит объекты в текстовый поток file, разделяются sep и завершаются endsepend и file если представлены, должны быть даны как аргументы ключевого слова.

Все аргументы, которые не являются ключевыми словами, конвертируются в строки, также как это делает str(), и записываются в поток, разделяясь set и оканчиваясь end. Оба set и end должны быть строками; они также могут быть None, который обозначает использовать значения по умолчанию. Если нет переданных объектов, print() просто выведет end.

Аргумент file должен быть объектом с методом write(string); если он не представлен или является None, sys.stdout будет использоваться. Так как печатные аргументы преобразуются в текстовые строки, print() не может быть использован файловыми объектами в бинарном режиме. Вместо этого для них используется file.write(...).

Будет ли вывод буферизирован - это обычно определяется file, но если аргуемент flush есть истина, поток принудительно размывается.

Изменено в версии 3.3: Добавлен аргумент-ключевое слово flush.

class property(fget=None, fset=None, fdel=None, doc=None)

Возвращает свойство атрибута.

fget - это функция для получения значения атрибута. fset - функция для установления значения атрибута. fdel - это функция для удаления значения атрибута. И doc создает строку документации для атрибута.

Обычно используется для определения управляемого атрибута х:

class C:

    def __init__(self):

        self._x = None

 

    def getx(self):

        return self._x

 

    def setx(self, value):

        self._x = value

 

    def delx(self):

        del self._x

 

    x = property(getx, setx, delx, "I'm the 'x' property.")

Если c экземпляр Cc.x будет вызывать getter, c.x = value будет вызывать setter и del c.x - deleter.

Если задано, doc будет строкой документации свойства атрибута. Иначе свойство скопирует строку документации fget (если она существует). Это делает возможным легко создать свойства только для чтения, используя property() как decorator (docs.python.org/3/glossary.html#term-decorator).

class Parrot:

    def __init__(self):

        self._voltage = 100000

 

    @property

    def voltage(self):

        """Get the current voltage."""

        return self._voltage

Декоратор @property превращает метод voltage() в "getter" для атрибута только для чтения с таким же именем, и это устанавливает строку документации для voltage в “Get the current voltage.”

Свойство объекта имеет методы getter, setter и deleter, используемые как декораторы, которые создают копию свойства с соответствующей функцией метода доступа, которая устанавливает декорируемую функцию. Это лучше объясняется на примере:

class C:

    def __init__(self):

        self._x = None

 

    @property

    def x(self):

        """I'm the 'x' property."""

        return self._x

 

    @x.setter

    def x(self, value):

        self._x = value

 

    @x.deleter

    def x(self):

        del self._x

Этот код точный эквивалент первого примера. Будет верно дать дополнительным функциям то же имя как оригинальное свойство (x в этом случае).

Возвращенное свойство объекта также имеет атрибуты fget, fset и fdel, соответствующие аргументам конструктора.

Изменено в версии 3.5: Строки документации свойств объекта теперь записываемые.

range(stop)
range(start, stop[, step])

range (docs.python.org/3/library/stdtypes.html#range) скорее не функция, а на самом деле тип неизменяемой последовательности, как документировано в Диапазоны и Типы последовательностей — list, tuple, range.

repr(object)

Возвращает строку, содержащую печатную версию объекта. Для многих типов эта функция делает попытку вернуть строку, которая бы дала объект с таким же значением, когда передается eval() (docs.python.org/3/library/functions.html#eval), иначе представление - это строка, заключенная в угловые скобки, которые содержат имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может контролировать, что эта функция возвращает для ее экземпляров, путем определения метода __repr__() (docs.python.org/3/reference/datamodel.html#object.__repr__).

reversed(seq)

Возвращает перевернутый iterator (docs.python.org/3/glossary.html#term-iterator). seq должен быть объектом, у которого есть метод __reversed__(), или поддерживать протокол последовательности (методы __len__() и __getitem__() с целочисленным аргументом, начинающимся с 0).

round(number[, ndigits])

Возвращает number, округленное до ndigits цифр после десятичной точки. Если ndigits опущен или None, то возвращает ближайшее целое к его вводу.

Для встроенных типов, поддерживающих round(), значения округляются к ближайшему кратному 10 в степени минус ndigits; если кратные одинаково близки, округление производится в сторону выравнивающего выбора (так, например, оба round(0.5) и round(-0.5) есть 0, а round(1.5) есть 2). Любое целое значение допустимо для ndigits (положительное, ноль или отрицательное). Возвращаемое значение есть целое, если вызывается с одним аргументом, иначе такого же типа как number.

Для общего Python-объекта numberround(number, ndigits) делегирует к number.__round__(ndigits).

Примечание: Поведение round() для вещественных чисел может быть неожиданным: например, round(2.675, 2) дает 2.67 вместо ожидаемого 2.68. Это не баг: это результат факта, что самые большие десятичные дроби не могут быть представлены точно как вещественные числа. Смотрите Арифметика чисел с плавающей точкой: проблемы и ограничения для дополнительной информации.

class set([iterable])

Возвращает новый объект set, опционально с элементами, взятыми из itarableset - это встроенный класс. Смотрите set и Типы множеств — set, frozenset для информации об этом классе.

Для других контейнеров смотрите встроенные классы frozenset, list, tuple и dict, а также модуль collections (docs.python.org/3/library/collections.html#module-collections).

setattr(object, name, value)

Это эквивалент getattr(). Аргументы являются объектом, строкой и произвольным значением. Строка может иметь название существующего атрибута или нового атрибута. Функция присваивает значение атрибуту, при условии, что объект это позволяет. Напримерsetattr(x, 'foobar', 123) эквивалентно x.foobar = 123.

class slice(stop)
class slice(start, stop[, step])

Возвращает объект slice (docs.python.org/3/glossary.html#term-slice), представленный множеством индексов, определенных range(start, stop, step). Аргументы start и step по умолчанию None.
У объектов среза (slice) есть только для чтения данные атрибутов start, stop и step, которые просто возвращают значения аргументов (или их по-умолчанию). Они не имеют никакой другой явной функциональности; однако они используются Numerical Python и другими сторонними расширениями. Объекты срезов также генерируются, когда используется расширенный синтаксис индексирования. Например: 
a[start:stop:step] или a[start:stop, i]. Смотрите itertools.islice() (docs.python.org/3/library/itertools.html#itertools.islice) для альтернативной версии, которая возвращает итератор.

sorted(iterable, *, key=None, reverse=False)

Возвращает новый отсортированный список из элементов в iterable.

Имеет два необязательных аргумента, которые должны быть быть определены как аргументы c ключевым словом.

key определяет функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента списка: key=str.lower. По умолчанию значение None (непосредственное сравнение элементов).

reverse есть булево значение. Если установлено в True, значит элементы списка сортируются, как если каждое сравнение было от обратного.

Используйте functools.cmp_to_key() (docs.python.org/3/library/functools.html#functools.cmp_to_key) для преобразования функции cmp старого стиля в функцию key.

Встроенная функция sorted() гарантировано будет стабильной. Сортировка стабильна, если на гарантирует не изменение относительного порядка элементов, которые считаются равными - это полезно для сортировки в несколько проходов (например, сортировка по отделам, затем по заработной плате).

Примеры сортировки и краткий учебник по сортировке смотри в Sorting HowTo (docs.python.org/3/howto/sorting.html#sortinghowto).

staticmethod(function)

Возвращает статический метод для function.

Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте эту идиому:

class C:

    @staticmethod

    def f(arg1, arg2, ...): ...

Форма @staticmethod - это функция decorator (docs.python.org/3/glossary.html#term-decorator) - смотри описание определений функций в Function definitions (docs.python.org/3/reference/compound_stmts.html#function) для подробностей.

Она может быть вызвана либо на класс (как C.f()), либо на экземпляр (как C().f()). Экземпляр игнорируется за исключением для его класса.

Статические методы в Python похожи на те, что в Java или C++. Также смотрите classmethod() как вариант, который является полезным для создания альтернативных конструкторов класса.

Для получения более подробной информации о статических методах, обращайтесь к документации по иерархии стандартных типов в The standard type hierarchy (docs.python.org/3/reference/datamodel.html#types).

class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')

Возвращает str версию object. Смотри str() для деталей.

str - это встроенный строковый class (docs.python.org/3/glossary.html#term-class). Для получения общей информации о строках смотрите Тип текстовой последовательности — str.

sum(iterable[, start])

Суммирует от start и элементы iterable слева направо и возвращает сумму. По умолчанию start равен 0. Элементы iterable обычно числа, и значению start не позволено быть строкой.

В некоторых случаях есть хорошая альтернатива для sum(). Предпочтительный, быстрый способ объединить последовательность строк - это вызов ''.join(sequence). Чтобы добавить значения с плавающей точкой с расширенной точностью, смотри math.fsum() (docs.python.org/3/library/math.html#math.fsum). Для объединения ряда итераций рассмотрите использование itertools.chain() (docs.python.org/3/library/itertools.html#itertools.chain).

super([type[, object-or-type]])

Возвращает объект прокси, который делегирует метод, вызывающий родительский или сестринский класс для type. Это полезно для доступа к унаследованным методам, которые были переопределены в классе. Порядок поиска такой же как при использовании getattr() за исключением того, что сам type пропускается.

Атрибут __mro__ type перечисляет разрешения метода порядка поиска, используя оба: getattr() и super(). Атрибут является динамическим и может измениться, когда обновляется иерархия наследования.

Если второй аргумент опущен, объект супер возвращается несвязанным. Если второй аргумент является объектом, isinstance(obj, type) должен быть правдой. Если второй аргумент является типом, issubclass(type2, type) должен быть правдой (это полезно для класс-методов).

Есть два типичных варианта использования для super. В иерархии классов с одиночным наследованием super можно использовать для обращения к родительским классам, не называя их явно, что делает код более сопровождаемым. Такое использование близко тому, которое используется для super в других языках программирования.

Второй вариант использования - поддержка совместного множественного наследования в динамичной среде выполнения. Этот вариант использования уникален для Python и отсутствует в статически компилируемых языках или языках, которые поддерживают только одиночное наследование. Это дает возможность реализовывать "ромбические диаграммы", где несколько базовых классов реализуют один и тот же метод. Хорошая разработка диктует, что этот метод имеет одну и ту же сигнатуру вызова в каждом случае (потому что порядок вызовов определяется во время выполнения, потому что тот порядок адаптируется к изменениям в иерархии классов, и потому что тот порядок может включать сестринские классы, которые неизвестны до времени выполнения).

Для обоих случаев использования, вызов типичного суперкласса выглядит так:

class C(B):

    def method(self, arg):

        super().method(arg)    # Делает тоже самое как:

                               # super(C, self).method(arg)

Заметьте, что super() реализуется как часть процесса связывания для явного точечного атрибута поиска как super().__getitem__(name). Это делается так путем реализации его собственного метода __getattribut__() для поиска классов в предсказуемом порядке, который поддерживает совместное множественное наследование. Соответственно, super() не определен для неявных поисков с использованием выражений или операторов, таких как super()[name].

Также заметьте, что помимо формы нулевого аргумента, super() не ограничивается для использования внутри методов. Двух-аргументная форма определяет аргументы точно и делает соответствующие ссылки. Форма нулевого аргумента работает только внутри определения класса, как компилятор заполняет необходимые детали для правильного извлечения определяемого класса, также как доступность текущего экземпляра для обычных методов.

Для практических предложений, как разрабатывать совместные классы, использующие super(), смотри guide to using super() (rhettinger.wordpress.com/2011/05/26/super-considered-super/)

tuple([iterable])

Скорее чем быть функцией, tuple в действительности тип неизменяемой последовательности, как описано в Кортежи и Типы последовательностей — list, tuple, range.

class type(object)
class type(name, bases, dict)

С одним аргументом возвращает тип object. Возвращаемое значение является типом объекта и как правило тем же объектом как возвращаемый от object.__class__.

Для проверки типа объекта рекомендуется встроенная функция isinstance(), т. к. они принимает во внимание подклассы.

С тремя аргументами возвращает новый объект типа. Это по-сути динамическая форма оператора class (docs.python.org/3/reference/compound_stmts.html#class). Строка name является именем класса и становится атрибутом __name__; кортеж bases перечисляет базовые классы и становится атрибутом __bases__; словарь dict является пространством имен, содержащим определения для тела класса, и становится атрибутом __dict__. Например, следующие два выражения создают объекты идентичного типа:

>>> class X:

...     a = 1

...

>>> X = type('X', (object,), dict(a=1))

Смотри также Объекты типов.

Изменено в версии 3.6: Подклассы type, которые не переопределяют type.__new__, могут больше не использовать одноаргументную форму, чтобы получить тип объекта

vars([object])

Возвращает атрибут __dict__ для модуля, класса, экземпляра или любого другого объекта с атрибутом __dict__.

Такие объекты как модули и экземпляры имеют обновляемый атрибут __dict__; однако другие объекты могут иметь ограничения на запись для их атрибута __dict__ (например, классы используют types.MappingProxyType (docs.python.org/3/library/types.html#types.MappingProxyType) для предотвращения обновлений словаря).

Без аргумента vars() действует как locals(). Заметьте, словарь locals полезен только для чтения, т. к. обновления словаря locals игнорируются.

zip(*iterables)

Создает итератор, который агрегирует элементы от каждого из iterables.

Возвращает итератор кортежей, где i-й кортеж содержит i-й элемент каждого из аргументов последовательностей или iterables. Итератор останавливается, когда самая короткая итерация исчерпывается. Если в качестве аргумента только одна итерация, то возвращает итератор одноэлементных кортежей. Без аргументов возвращает пустой итератор. Эквивалентно следующему:

def zip(*iterables):

    # zip('ABCD', 'xy') --> Ax By

    sentinel = object()

    iterators = [iter(it) for it in iterables]

    while iterators:

        result = []

        for it in iterators:

            elem = next(it, sentinel)

            if elem is sentinel:

                return

            result.append(elem)

        yield tuple(result)

Порядок оценки слева на право для iterables гарантируется. Это делает возможной идиому для кластеризации серий данных в группы n-длины с помощью zip(*[iter(s)]*n).

zip() следует использовать только с входящими неравной длины, если вам не важны концы, неучтенные значения из более длинных iterables. Если эти значения важны, используйте вместо этого itertools.zip_longest() (docs.python.org/3/library/itertools.html#itertools.zip_longest).

zip() в соединении с оператором * может быть использован для распаковки списка:

>>> x = [1, 2, 3]

>>> y = [4, 5, 6]

>>> zipped = zip(x, y)

>>> list(zipped)

[(1, 4), (2, 5), (3, 6)]

>>> x2, y2 = zip(*zip(x, y))

>>> x == list(x2) and y == list(y2)

True

__import__(name, globals=None, locals=None, fromlist=(), level=0)

Замечание: Это продвинутая функция, которая не нужна в повседневном программировании на Python, в отличие от importlib.import_module() (docs.python.org/3/library/importlib.html#importlib.import_module).

Эта функция вызывается оператором import (docs.python.org/3/reference/simple_stmts.html#import). Это может быть заменено (путем импорта модуля builtings (docs.python.org/3/library/builtins.html#module-builtins) и назначения builtins.__import__) для изменения семантики оператора import, но делать так настоятельно не рекомендуется, поскольку это, как правило, проще при использовании импортируемых hooks (см. PEP 302 (www.python.org/dev/peps/pep-0302)) для достижения тех же целей, и это не вызывает проблем с кодом, который предполагает реализацию импорта по умолчанию в использовании. Прямое использование __import__() также не приветствуется в пользу importlib.import_module().

Функция импортирует модуль name, потенциально используя заданные globals и locals для определения, как интерпретировать имя в контексте пакета. fromlist задает имена объектов или подмодулей, которые должны быть импортированы из модуля, заданного как name. Стандартная реализация не использует ее аргумент locals вообще, и использует ее globals только для определения пакета контекста оператора import.

level определяет использовать ли абсолютный или относительный импорт. 0 (по умолчанию) обозначает выполнение только абсолютных импортов. Положительное значение для level указывает количество родительских каталогов для поиска по отношению к директории модуля вызываемого __import__() (для подробностей см. PEP 328 (python.org/dev/peps/pep-0328)).

Когда переменная name является видом package.module, обычно возвращается верхнеуровневый пакет (имя до первой точки), не модуль с именем name. Однако, когда задан не пустой аргумент fromlist, возвращается модуль названный как name.

Например, выражение import spam дает результат в байткоде, напоминающем следующий код:

spam = __import__('spam', globals(), locals(), [], 0)

Выражение import spam.ham дает результат этого вызова:

spam = __import__('spam.ham', globals(), locals(), [], 0)

Обратите внимание, как здесь __import__() возвращает модуль верхнего уровня, потому что это объект, который связан с именем оператора import.

С другой стороны, выражение от spam.ham import eggs, sausage as saus дает подобный результат:

_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)

eggs = _temp.eggs

saus = _temp.sausage

Здесь от __import__() возвращается модуль spam.ham. Из этого объекта имена в импорте извлекаются и присваиваются их соответствующим именам.

Если вы просто хотите импортировать модуль (возможно в пакете) по имени, используйте importlib.import_module() (docs.python.org/3/library/importlib.html#importlib.import_module).

Изменено в версии 3.3: Отрицательные значения для level больше не поддерживаются (они изменяются на значение по умолчанию 0).

Примечания

[1] Обратите внимание, что парсер принимает только конец Unix-стиля конвенции строки. Если вы читаете код из файла, убедитесь, что используете режим преобразования новой строки для преобразования Windows, или Mac-стиля новой строки.

 

 

 

 

 

Ключевые слова

 

and

as

assert

break

class

continue

def

del

elif

else

Del

except

finally

for

from

global

Global

if

in

is

lambda

not

or

raise

return

try

with

While

yield

 

 

 

 

 

and

Ключевым словом and обозначается операция «логическое И». Ее используют для объединения двух булевых (то есть возвращающих True

или False) выражений. Получившееся составное выражение даст True,

только если оба исходных выражения возвращают True. Пример:

if age > 10 and age < 20:

 print('Осторожно, подросток!!!!')

Сообщение будет напечатано лишь в том случае, если значение переменной age больше 10 и меньше 20.

And — и

Age — возраст

Print —

напечатать

 

as

С помощью ключевого слова as можно дать импортированному модулю

другое имя. Допустим, у нас есть модуль с очень длинным названием:

i_am_a_python_module_that_is_not_very_useful

Вводить такое имя при каждом обращении к модулю будет неудобно:

import i_am_a_python_module_that_is_not_very_useful

i_am_a_python_module_that_is_not_very_useful.do_something()

Я сделал что-то бесполезное.

i_am_a_python_module_that_is_not_very_useful.do_something_else()

Я сделал еще что-то бесполезное!

При импортировании модулю лучше дать новое короткое имя

(псевдоним):

import i_am_a_python_module_that_is_not_very_useful as notuseful

notuseful.do_something()

Я сделал что-то бесполезное.

notuseful.do_something_else()

Я сделал еще что-то бесполезное!

assert

Ключевое слово assert позволяет убедиться, что некое выражение дает True. Это один из способов обнаружить ошибки и неполадки. Он применяется при создании более сложных программ, поэтому в коде примеров

в этой книге assert не используется. Вот простая конструкция assert:

>>> mynumber = 10

>>> assert mynumber < 5

Traceback (most recent call last):

 File "<pyshell#1>", line 1, in <module>

 assert a < 5

AssertionError

В этом примере мы хотим убедиться, что значение переменной mynumber меньше 5. Поскольку в данном случае это не так, Python останавливает программу и выводит ошибку AssertionError.

As — как

I am a Python

module that is not

very useful —

я модуль Python,

который

не очень полезен

Do something —

сделать что-то

Do something

else — сделать

что-то другое

Assert — утверждать

My number — мое

число

Not useful —

не полезный

Assertion

Error — ошибка

утверждения

Приложение: ключевые слова Python 285

break

Ключевое слово break служит для досрочного выхода из цикла.

Например, для цикла for:

age = 10

for x in range(1, 100):

 print('отсчет %s' % x)

 if x == age:

 print('закончили считать')

 break

Поскольку в переменной age хранится число 10, эта программа напечатает вот что:

отсчет 1

отсчет 2

отсчет 3

отсчет 4

отсчет 5

отсчет 6

отсчет 7

отсчет 8

отсчет 9

отсчет 10

закончили считать

Как только значение переменной x достигнет 10, программа выведет

сообщение «Закончили считать» и выйдет из цикла.

class

Ключевое слово class служит для определения типов сущностей

(классов), таких как «средство передвижения», «животное», «человек».

У каждого класса может быть специальная функция __init__, предназначенная для подготовки новых объектов к работе. Например, если объектам класса Car нужно свойство color, его можно добавить в функции

__init__, которая вызывается при создании объекта:

class Car:

 def __init__(self, color):

 self.color = color

Break — остановить

For — для

Class — класс

Init —

от initiate —

запустить,

начать

Car — машина

Color — цвет

car1 = Car('red')

car2 = Car('blue')

print(car1.color)

red

print(car2.color)

blue

continue

Ключевое слово continue позволяет «перескочить» к следующему повтору цикла, так что следующая после continue часть тела цикла будет

пропущена. В отличие от break происходит не выход из цикла, а досрочное завершение текущего повтора с переходом к следующему. Например,

если у нас есть список строк и мы хотим напечатать все элементы, которые начинаются не с буквы «б», можно написать такой код:

 >>> my_items = ['яблоко', 'трубкозуб', 'банан', 'барсук',

 'клементин', 'верблюд']

>>> for item in my_items:

if item.startswith('б'):

continue

print(item)

 яблоко

 трубкозуб

 клементин

 верблюд

В строке  создаем список строк, в строке  задаем цикл для перебора элементов списка. В строке  выполняется проверка, начинается

ли текущий элемент с буквы «б». Если это так, в строке  с помощью

continue переходим к следующему повтору цикла (и следующему элементу списка). Если нет, печатаем текущий элемент в строке .

def

Используйте ключевое слово def, чтобы дать определение функции.

Например, так можно определить функцию, преобразующую годы

в минуты:

>>> def minutes(years):

 return years * 365 * 24 * 60

>>> minutes(10)

5256000

Continue — продолжить

My items — мои

предметы

Starts with —

начинается с

Red — красный

Blue — синий

Def — от defi ne —

определить

Minutes —

минуты

Years — годы

del

С помощью ключевого слова del можно удалить элемент из списка или

словаря. Предположим, вы от руки составили список подарков, которые

хотите получить на день рождения, затем вычеркнули из списка одну

строку и добавили новую:

радиоуправляемый автомобиль

новый велосипед

компьютерная игра

змея-робот

В Python изначальный список будет выглядеть так:

what_i_want = ['радиоуправляемый автомобиль', 'новый велосипед',

'компьютерная игра']

Чтобы удалить из списка компьютерную игру, используем команду

del с индексом соответствующего элемента. Затем можно добавить новый элемент с помощью функции append:

del what_i_want[2]

what_i_want.append('змея-робот')

И вывести измененный список на экран:

print(what_i_want)

['радиоуправляемый автомобиль', 'новый велосипед', 'змея-робот']

elif

Ключевое слово elif используется как часть конструкции if (см. описание ключевого слова if).

else

Ключевое слово else используется как часть конструкции if (см. описание ключевого слова if).

Del — от delete —

удалить

Append —добавить

What I want — что

я хочу

Else — еще

except

Ключевое слово except служит для обнаружения неполадок в коде. Как

правило, его используют в сложных программах, поэтому в нашей книге

мы его не рассматриваем.

finally

Ключевое слово finally нужно для выполнения некоего обязательного

кода при возникновении ошибки (как правило, чтобы освободить ресурсы, затребованные программой перед тем, как возникла ошибка). В этой

книге ключевое слово fi nally не рассматривается, поскольку относится

к продвинутым приемам программирования.

for

Ключевое слово for используется для создания цикла, повторяющего

блок кода определенное число раз. Например:

for x in range(0, 5):

 print('x = %s' % x)

Этот цикл повторит блок кода (команду print) пять раз, после чего

вы увидите на экране:

x = 0

x = 1

x = 2

x = 3

x = 4

from

Ключевое слово from позволяет импортировать только ту часть модуля,

которая необходима. Например, в модуле turtle (впервые упоминается

в главе 4) есть класс Pen для создания холста, по которому перемещается

черепашка. Можно импортировать весь модуль turtle, затем использовать класс Pen:

import turtle

t = turtle.Pen()

Except — здесь

от exception —

исключение

Finally —

под конец

For — для

From — из

Turtle — черепаха

Pen — ручка

А можно импортировать только класс Pen и затем использовать его

без явного обращения к модулю turtle:

from turtle import Pen

t = Pen()

Один из плюсов данного подхода в том, что, заглянув в начало программы, вы сразу увидите, какие функции и классы в ней задействованы (это особенно актуально для программ, импортирующих множество

модулей). Однако вы не сможете использовать те части модулей, которые не были импортированы. Например, в модуле time есть функции

localtime и gmtime. Если вы импортируете только localtime, а потом

попытаетесь воспользоваться gmtime, возникнет ошибка:

>>> from time import localtime

>>> print(localtime())

(2007, 1, 30, 20, 53, 42, 1, 30, 0)

>>> print(gmtime())

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

NameError: name 'gmtime' is not defined

Сообщение об ошибке — «name 'gmtime' is not defi ned» — означает, что Python ничего не знает о функции gmtime. И это неудивительно,

поскольку вы ее не импортировали.

Если в каком-то модуле содержится набор нужных вам функций, но вы

не хотите при каждом обращении к ним указывать имя модуля (например, time.localtime или time.gmtime), вы можете импортировать

все содержимое модуля с помощью знака звездочки (*). Вот так:

>>> from time import *

>>> print(localtime())

(2007, 1, 30, 20, 57, 7, 1, 30, 0)

>>> print(gmtime())

(2007, 1, 30, 13, 57, 9, 1, 30, 0)

Импортируется все содержимое модуля time, и можно использовать

входящие в него функции, указывая только их имена.

global

Концепция области видимости рассматривается в главе 7. Определенная

вне функции переменная, как правило, доступна (видима) в коде этой

Time — время

Local time — местное время

GM time —

от Greenwich

Mean — время

по Гринвичу

Global — глобальный

функции, но определенная внутри функции переменная снаружи обычно не видна. Ключевое слово global позволяет сделать исключение

из этого правила: переменная, объявленная как глобальная (global),

видима во всей программе. Например:

>>> def test():

 global a

 a = 1

 b = 2

Если вызвать функцию test, затем дать команды print(a)

и print(b), первая команда сработает, а вторая нет (произойдет ошибка):

>>> test()

>>> print(a)

1

>>> print(b)

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

NameError: name 'b' is not defined

Переменная a была объявлена в функции test как глобальная, поэтому видима даже вне этой функции. Однако b видима только в коде

функции, и чтобы обращаться к ней так же, как к a, ее тоже придется

сделать глобальной.

if

Ключевое слово if нужно для выполнения кода в соответствии с заданным условием. Совместно с if также используются ключевые слова else

и elif (сокращение от else if). Например:

 if toy_price > 1000:

 print('Эта игрушка чересчур дорогая')

 elif toy_price > 100:

 print('Эта дорогая игрушка')

 else:

 print('Я могу купить эту игрушку')

Если, согласно условию в строке , хранящаяся в переменной toy_

price цена игрушки превышает 1000, в строке  будет напечатано сообщение о ее чрезмерной дороговизне. В противном случае будет выполнена проверка в строке : если цена игрушки больше 100, в строке 

будет напечатано сообщение, что игрушка дорогая. И наконец, если

If — если

Toy price — цена

игрушки

ни одно из предыдущих условий не выполняется, сработает ветка else

в строке , в результате чего в строке  будет напечатано сообщение

«Я могу купить эту игрушку».

import

Ключевое слово import используется для загрузки (импортирования)

модуля в программу. Например, следующая команда загружает модуль

sys, после чего им можно пользоваться:

import sys

in

Ключевое слово in используется в логических выражениях для проверки, входит ли некое значение в набор элементов. Например, есть ли среди

элементов списка число 1:

>>> if 1 in [1,2,3,4]:

>>> print('число есть в списке')

число есть в списке

А так можно проверить, находится ли строка «штаны» в списке предметов одежды:

>>> clothing_list = ['шорты', 'трусики', 'боксеры', 'кальсоны',

'панталоны']

>>> if 'штаны' in clothing_list:

 print('штаны есть в списке')

else:

 print('штанов в списке нет')

штанов в списке нет

is

Ключевое слово is по смыслу похоже на оператор «равно» (==), который

используется для проверки равенства двух значений (например, выражение 10 == 10 даст True, а 10 == 11 даст False). Однако между is и ==

есть различия. Если сравнение значений через == дает True, сравнение

тех же значений через is в некоторых случаях может дать False (даже

если значения одинаковы). Это относится к продвинутым средствам программирования, поэтому в книге мы всегда используем оператор ==.

Import — импортировать

Sys —

от system —

система

In — в

Clothing list — список вещей

Is — есть

lambda

Ключевое слово lambda используется для создания безымянных (или

«встроенных») функций. Мы не рассматриваем безымянные функции

в этой книге.

not

Если утверждение истинно, ключевое слово not сделает его ложным.

Например, если создать переменную x и задать ей значение True, а затем

напечатать значение x, поставив перед ним not, выйдет вот что:

>>> x = True

>>> print(not x)

False

Ключевое слово not кажется бесполезным до тех пор, пока вы не начнете использовать not вместе с if. Например, проверить, что строка

не находится в списке, можно так:

>>> clothing_list = ['шорты', 'трусики', 'боксеры', 'кальсоны',

'панталоны']

>>> if 'штаны' not in clothing_list:

 print('Как вы живете без штанов?')

Как вы живете без штанов?

or

Ключевым словом or обозначается операция «логическое ИЛИ». Ее используют для объединения двух булевых (то есть возвращающих True

или False) выражений. Составное выражение даст True, если хотя бы

одно из исходных выражений дает True. Например:

if dino == 'Тираннозавр' or dino == 'Аллозавр':

 print('Хищники')

elif dino == 'Анкилозавр' or dino == 'Апатозавр':

 print('Травоядные')

Если переменная dino содержит строку «Тираннозавр» или «Аллозавр», программа напечатает: «Хищники». Если же dino содержит строку «Анкилозавр» или «Апатозавр», программа напечатает:

«Травоядные».

Lambda —

лямбда, в прогр.

анонимная

функция

Not — не

Or — или

Dino —

от dinosaur —

динозавр

Приложение: ключевые слова Python 293

pass

Иногда программу удобнее писать и тестировать небольшими частями.

Но есть проблема: нельзя создать конструкцию if без блока с кодом, который должен выполняться, когда условие if дает True. Точно так же

не получится создать цикл for без тела цикла. Например, этот код работает нормально:

>>> age = 15

>>> if age > 10:

 print('старше 10')

старше 10

Однако если убрать тело if, Python выдаст ошибку:

>>> age = 15

>>> if age > 10:

File "<stdin>", line 2

^

IndentationError: expected an indented block

Такое сообщение об ошибке возникает, если после какой-либо конструкции должен стоять блок кода, но его там нет (кстати, IDLE не позволит ввести код этого примера). В подобных случаях вместо отсутствующего кода можно ввести команду pass, которая не выполняет действий.

Допустим, мы хотим создать цикл for с конструкцией if внутри

него, но пока не решили, что будет происходить в теле if (печать сообщения, выход из цикла по break или еще что-то). Можно воспользоваться

pass, и код запустится, несмотря на то что он не завершен.

Вот конструкция if с ключевым словом pass в качестве блока кода:

>>> age = 15

>>> if age > 10:

 pass

Еще пример использования pass:

>>> for x in range(0, 7):

>>> print('x = %s' % x)

Pass —

пропустить

>>> if x == 5:

 pass

x = 0

x = 1

x = 2

x = 3

x = 4

x = 5

x = 6

Python при каждом повторе цикла проверяет, содержит ли переменная x число 5, но если это так, не выполняет действий, а просто печатает

числа в диапазоне от 0 до 7.

Можно заменить pass работающим кодом, например командой

break:

>>> for x in range(1, 7):

 print('x = %s' % x)

 if x == 5:

 break

x = 1

x = 2

x = 3

x = 4

x = 5

Но чаще всего ключевое слово pass используют для определения

функции без написания кода, чтобы добавить его позже.

raise

С помощью ключевого слова raise можно вызвать ошибку в программе.

Как ни странно, в продвинутом программировании это часто бывает полезным. В этой книге команда raise не рассматривается.

return

Ключевое слово return используется для возвращения значения

из функции. Например, можно создать функцию, которая вычисляет количество секунд, прожитых вами до последнего дня рождения:

def age_in_seconds(age_in_years):

 return age_in_years * 365 * 24 * 60 * 60

Raise — поднять

Return — вернуть

Age in seconds —

возраст

в секундах

Age in years —

возраст в годах

Приложение: ключевые слова Python 295

Эта функция возвращает значение, которое можно присвоить переменной или вывести на экран:

>>> seconds = age_in_seconds(9)

>>> print(seconds)

283824000

>>> print(age_in_seconds())

378432000

try

Ключевое слово try открывает блок кода, который заканчивается ключевыми словами except и finally. Блоки try/except/finally используются для обработки ошибок (например, чтобы показывать пользователю понятное сообщение, а не ошибку Python). В этой книге ключевое

слово try не рассматривается.

while

Цикл while напоминает for, однако если for перебирает значения

из заданного диапазона, то while повторяется до тех пор, пока условие

дает True. Будьте осторожны: если условие цикла while всегда будет выполняться, программа не выйдет из цикла (это называется бесконечным

циклом), пока вы ее не остановите, нажав Ctrl-C. Например:

>>> x = 1

>>> while x == 1:

 print('Привет')

Следующий код напечатает «Привет» девять раз (на каждом повторе

увеличивая x на 1, пока x не станет равен 10):

>>> x = 1

>>> while x < 10:

 print('Привет')

 x = x + 1

with

Ключевое слово with используется для создания блоков кода с обработкой ошибок наподобие блоков try/finally. В этой книге команда with

не рассматривается.

Try —

попробовать

While — пока

With — с

yield

Ключевое слово yield по смыслу напоминает return, но используется

со специальным классом объектов — генераторами. Генераторы создают

значения «на лету» (то есть по запросу), и функция range работает как

генератор. В этой книге команда yield не рассматривается.

Yield — здесь

«создавать»

 

 

 

 

 

 

 

 

 

 

 

 

Словарь терминов

Алгоритм - это последовательность действий, приводящих к требуемому результату.

Алгоритмизация - процесс составления алгоритмов решения задачи.

Дискретность - процесс преобразования данных, т.е. на каждом шаге алгоритма выполняется очередная одна операция.

Ввод данных - это передача информации от внешнего носителя в оперативную память для обработки.

Результативность – свойство алгоритм, заключающееся в даче некоторого результата.

Формализация – математическая постановка задачи.

Итерация - циклическая управляющая структура, которая содержит композицию и ветвление. Она предназначена для организации повторяющихся процессов обработки последовательности значений данных.

Композиция (следование) - это линейная управляющая конструкция, не содержащая альтернативу и итерацию. Она предназначена для описания единственного процесса обработки информации.

Ветвление - управляющая структура, организующая выполнение лишь одного из двух указанных действий в зависимости от справедливости некоторого условия.

Условие - вопрос, имеющий два варианта ответа: да или нет.

Цикл – многократно повторяемые участки вычислительного процесса.

Массив - упорядоченная структура, предназначенная для хранения однотипных данных.

Индекс - порядковый номер элемента.

Размерность - максимально возможное количество элементов в массиве. В один момент времени можно обратиться только к одному элементу массива. Для этого указывается имя массива и в скобках индекс элемента.

Рекурсия – это способ организации процесса вычисления, когда алгоритм обращается сам к себе.

Комментарий - это пояснительный текст, который можно записать в любом месте программы, где разрешен пробел. Текст комментария может содержать любые комбинации латинских и русских букв, цифр и других символов языка и должен быть ограничен несколькими символами.

Алгоритм дихотомии – метод деления отрезка пополам.

Адрес элемента – порядковый номер начального байта размещения этого элемента в памяти.

Тип - это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями.

Глобальные переменные – переменные, объявленные вне процедур и функций.

Оператор присваивания - это основной оператор любого языка программирования, позволяющий поместить определенное значение в необходимую переменную.

Множество – упорядоченная совокупность данных одного типа, записанных без повторений и отсортированных по возрастанию.

Строка - это последовательность символов кодовой таблицы ПЭВМ.

Процедурой – именованная последовательность инструкций, реализующая некоторое действие.

Сортировка – процесс расположения элементов массива в порядке убывания (возрастания) из значений.

 

 

Литература

а) основная литература:

1.      Сузи, Р. А. Язык программирования Python / Р. А. Сузи. — М. : Интернет-Университет Информационных Технологий (ИНТУИТ), 2016. — 350 c. — ISBN 5-9556-0058-2. — Текст : электронный // Электронно-библиотечная система IPR BOOKS : [сайт]. — URL: http://www.iprbookshop.ru/52211.html (дата обращения: 11.11.2019). — Режим доступа: для авторизир. Пользователей

2.      Буйначев, С. К. Основы программирования на языке Python : учебное пособие / С. К. Буйначев, Н. Ю. Боклаг ; под редакцией Ю. В. Песин. — Екатеринбург : Уральский федеральный университет, ЭБС АСВ, 2014. — 92 c. — ISBN 978-5-7996-1198-9. — Текст : электронный // Электронно-библиотечная система IPR BOOKS : [сайт]. — URL: http://www.iprbookshop.ru/66183.html (дата обращения: 11.11.2019). — Режим доступа: для авторизир. Пользователей

3.      Васильев, А. Н. Python на примерах : практический курс по программированию / А. Н. Васильев. — 2-е изд. — СПб. : Наука и Техника, 2017. — 432 c. — ISBN 978-5-94387-741-4. — Текст : электронный // Электронно-библиотечная система IPR BOOKS : [сайт]. — URL: http://www.iprbookshop.ru/73043.html (дата обращения: 11.11.2019). — Режим доступа: для авторизир. Пользователей

4.      Шелудько, В. М. Основы программирования на языке высокого уровня Python : учебное пособие / В. М. Шелудько. — Ростов-на-Дону, Таганрог : Издательство Южного федерального университета, 2017. — 146 c. — ISBN 978-5-9275-2649-9. — Текст : электронный // Электронно-библиотечная система IPR BOOKS : [сайт]. — URL: http://www.iprbookshop.ru/87461.html (дата обращения: 11.11.2019). — Режим доступа: для авторизир. Пользователей

5.      Шелудько, В. М. Язык программирования высокого уровня Python. Функции, структуры данных, дополнительные модули : учебное пособие / В. М. Шелудько. — Ростов-на-Дону, Таганрог : Издательство Южного федерального университета, 2017. — 107 c. — ISBN 978-5-9275-2648-2. — Текст : электронный // Электронно-библиотечная система IPR BOOKS : [сайт]. — URL: http://www.iprbookshop.ru/87530.html (дата обращения: 11.11.2019). — Режим доступа: для авторизир. пользователей

 

б) дополнительная литература:

1.      Кольцов, Д. М. Python. Создаем программы и игры / Д. М. Кольцов. — СПб. : Наука и Техника, 2017. — 400 c. — ISBN 978-5-94387-746-9. — Текст : электронный // Электронно-библиотечная система IPR BOOKS : [сайт]. — URL: http://www.iprbookshop.ru/73044.html (дата обращения: 11.11.2019). — Режим доступа: для авторизир. пользователей

2.      Томашевский, П. Р. Привет, Python! Моя первая книга по программированию / П. Р. Томашевский. — СПб. : Наука и Техника, 2018. — 256 c. — ISBN 978-5-94387-748-3. — Текст : электронный // Электронно-библиотечная система IPR BOOKS : [сайт]. — URL: http://www.iprbookshop.ru/73047.html (дата обращения: 11.11.2019). — Режим доступа: для авторизир. Пользователей

3.      Маккинли, Уэс Python и анализ данных / Уэс Маккинли ; перевод А. Слинкина. — 2-е изд. — Саратов : Профобразование, 2019. — 482 c. — ISBN 978-5-4488-0046-7. — Текст : электронный // Электронно-библиотечная система IPR BOOKS : [сайт]. — URL: http://www.iprbookshop.ru/88752.html (дата обращения: 11.11.2019). — Режим доступа: для авторизир. пользователей

 Перечень ресурсов информационно-телекоммуникационной сети «Интернет», необходимых для освоения дисциплины.

Примеры описания разных видов наименований учебной литературы:

1) eLIBRARY.RU [Электронный ресурс]: электронная библиотека / Науч. электрон. б-ка. –– Москва, 1999 – . Режим доступа: http://elibrary.ru/defaultx.asp (дата обращения: 01.04.2017). – Яз. рус., англ.

2) Moodle [Электронный ресурс]: система виртуального обучением: [база данных] / Даг. гос. ун-т. – Махачкала, г. – Доступ из сети ДГУ или, после регистрации из сети ун-та, из любой точки, имеющей доступ в интернет. – URL: http://moodle.dgu.ru/ (дата обращения: 22.03.2018).

3) Электронный каталог НБ ДГУ [Электронный ресурс]: база данных содержит сведения о всех видах лит, поступающих в фонд НБ ДГУ/Дагестанский гос. ун-т. – Махачкала, 2010 – Режим доступа: http://elib.dgu.ru, свободный (дата обращения: 21.03.2018).

4) Питонтьютор. Интерактивный учебник языка Python [Электронный ресурс]: система виртуального обучением: –– Москва, 2019 – . URL: https://pythontutor.ru/lessons/ (дата обращения: 01.09.2019). – Яз. рус.

5) Программирование на Python-Stepik    [Электронный ресурс]: система виртуального обучением: –– Москва, 2019 –  URL: https://stepik.org/course/67/promo  (дата обращения: 01.09.2019). – Яз. рус.

6) Самоучитель Python [Электронный ресурс]: система виртуального обучением: –– Москва, 2019   URL: https://pythonworld.ru/samouchitel-python  (дата обращения: 01.09.2019). – Яз. рус.

7) Пособия для изучающих Python, разбор задач любого уровня сложности на языке Питон [Электронный ресурс]: система виртуального обучением: –– Москва, 2019   URL: https://tproger.ru/tag/python/  (дата обращения: 01.09.2019). – Яз. рус.